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)

ビューでDidLoad

そして AppDelegate で

func showLabel() {}

based on : didBecomeActive() で Optional Value をアンラップするときは Nil

于 2015-01-19T20:58:01.303 に答える
1

問題は、新しいインスタンスを作成し、ViewControllerそれにデータを設定しようとしていることです。

その代わりに、既存のものを使用します(あなたが作成したものdidFinishLaunchingWithOptions:

于 2015-01-19T20:08:22.860 に答える
1

以前の投稿viewDidLoadで説明したように、View Controller の関数でラベルを初期化する必要があります。

実際、 にいる時点ではapplicationWillEnterForeground、View Controller はまだ初期化されていないため、ラベル textLabel は null ( nil) であり、null オブジェクトのプロパティにアクセスしようとしています (エラーの理由)。

ViewController.swift:

@IBOutlet var textLabel: UILabel!

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