找到applicationWillEnterForeground为textLabel找到nil

时间:2015-01-19 19:54:12

标签: ios swift null textlabel

我正试图在应用程序进入前景时更改标签上的文字,但我总是得到

致命错误:在解包可选值时意外发现nil

ViewController.swift

  @IBOutlet var textLabel: UILabel!

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

AppDelegate.swift

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

任何想法如何解决它?

3 个答案:

答案 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:上创建)