0

当应用程序进入前台时,我正在尝试更改标签上的文本,但我总是得到

致命错误:在展开可选值时意外发现 nil

ViewController.swift

  @IBOutlet var textLabel: UILabel!

    func showLabel() {
        textLabel.text = "Welcome back"
    }

AppDelegate.swift

func applicationWillEnterForeground(application: UIApplication) {
       ViewController().showLabel()
    }

任何想法如何解决它?

4

3 回答 3

2

感谢您的回答!我用它来管理它

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showLabel", name: UIApplicationDidBecomeActiveNotification, object: nil)

在 viewDidLoad

然后在 AppDelegate

func showLabel() {}

基于: 在 didBecomeActive() 中展开可选值时为 Nil

于 2015-01-19T20:58:01.303 回答
1

正如我在上一篇文章中解释的那样您应该在viewDidLoad视图控制器的函数中初始化标签。

事实上,当您在 中时applicationWillEnterForeground,您的视图控制器尚未初始化,因此标签 textLabel 为 null ( nil) 并且您正在尝试访问 null 对象的属性(错误的原因)。

ViewController.swift:

@IBOutlet var textLabel: UILabel!

func viewDidLoad() {
    textLabel.text = "Welcome back"
}
于 2015-01-19T20:00:37.387 回答
1

问题是,您正在创建您的新实例ViewController并尝试为其设置数据。

而不是使用现有的(您创建于didFinishLaunchingWithOptions:

于 2015-01-19T20:08:22.860 回答