我使用xib自定义了一个viewcontroller,这个viewcontroller有一个标签。
我已将标签与xib连接。
但是当我使用这个标签时,它是零。
我做错了什么?
下面是我的代码。
import UIKit
class MyViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
使用此viewcontroller的代码
let myViewController = MyViewController(nibName: "MyViewController", bundle: nil)
myViewController.label.text = "test"
presentViewController(myViewController, animated: true) { () -> Void in
println("ok")
}
谢谢。
答案 0 :(得分:3)
您指定的nib文件不会立即加载。它是在第一次访问视图控制器的视图时加载的。如果要在加载nib文件后执行其他初始化,请覆盖viewDidLoad方法并在那里执行任务。
您可以从viewDidLoad
访问标签。如果需要从外部访问标签,请确保首先访问view
属性以强制加载视图。
答案 1 :(得分:3)
问题是您在加载标签之前尝试访问标签。
以下更改可能会解决您的问题;
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")
}
答案 2 :(得分:0)
未加载视图控制器的视图。您可以在视图控制器中使用viewDidLoad()方法,也可以通过访问view属性来加载它。它是懒惰加载并将加载您的视图。 所以在访问viewController.view.label之前写print(viewController.view)来延迟加载视图