Swift自定义UIViewController的标签为零
问题描述:
我用xib自定义了一个viewcontroller,并且这个viewcontroller有一个标签。Swift自定义UIViewController的标签为零
我已经将标签与xib连接起来了。
但是当我使用这个标签时,它是零。
我做了什么?
下面是我的代码。
import UIKit
class MyViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
代码使用此视图 - 控制
let myViewController = MyViewController(nibName: "MyViewController", bundle: nil)
myViewController.label.text = "test"
presentViewController(myViewController, animated: true) {() -> Void in
println("ok")
}
谢谢。
答
问题是你正试图访问标签加载之前。
以下更改可能会解决您的问题;
import UIKit
class MyViewController: UIViewController {
var labelText: String!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//Setting Label text here
label.text = labelText;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
和
let myViewController = MyViewController(nibName: "MyViewController", bundle: nil)
myViewController.labelText = "test"
presentViewController(myViewController, animated: true) {() -> Void in
println("ok")
}
答
指定的笔尖文件没有被加载的时候了。它在第一次访问视图控制器的视图时加载。如果您想在加载nib文件后执行额外的初始化,请覆盖viewDidLoad方法并在那里执行任务。
您可以从viewDidLoad
访问标签。如果您需要从外部访问标签,请确保先访问了view
属性,以强制加载视图。
答
未加载视图控制器的视图。您可以在视图控制器内使用viewDidLoad()方法,也可以通过访问视图属性来加载它。这是懒加载,并会加载你的看法。 因此,在访问viewController.view.label写入打印(viewController.view)以延迟加载视图
谢谢你的评论。我尝试你的代码,但viewDidLoad中的标签仍然是零。而我尝试viewDidAppear也是无 – aotian16
检查您的IBoutlet是否连接正确。 – Shoaib
你说得对。这是IBoutlet问题。再次感谢。 – aotian16