我正试图在应用程序进入前景时更改标签上的文字,但我总是得到
致命错误:在解包可选值时意外发现nil
ViewController.swift
@IBOutlet var textLabel: UILabel!
func showLabel() {
textLabel.text = "Welcome back"
}
和
AppDelegate.swift
func applicationWillEnterForeground(application: UIApplication) {
ViewController().showLabel()
}
任何想法如何解决它?
答案 0 :(得分:2)
感谢您的回答!我用
管理它NSNotificationCenter.defaultCenter().addObserver(self, selector: "showLabel", name: UIApplicationDidBecomeActiveNotification, object: nil)
在viewDidLoad
中然后在AppDelegate
中func showLabel() {}
基于: Nil when unwrapping an Optional Value in didBecomeActive()
答案 1 :(得分:1)
正如我在之前的post中所解释的那样,您应该在视图控制器的viewDidLoad
函数中初始化您的标签。
事实上,当你在applicationWillEnterForeground
时,你的视图控制器还没有被初始化,所以标签textLabel为null(nil
)并且你试图访问一个属性null对象(错误原因)。
ViewController.swift:
@IBOutlet var textLabel: UILabel!
func viewDidLoad() {
textLabel.text = "Welcome back"
}
答案 2 :(得分:1)
问题是,您正在创建ViewController
的新实例,并尝试将数据设置为该实例。
而不是使用现有的(您在didFinishLaunchingWithOptions:
上创建)