2017-05-20 19 views
0

私は、viewDidLoad()関数でAlert View Controllerを開くべきアプリケーションを持っています。それは簡単なリマインダーアプリです。コードの一部は次のとおりです。アプリケーションにAlert View Controllerが表示されませんか?

let alert = UIAlertController(title: "Reminder", message: "Your reminder text", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "Sure!", style: UIAlertActionStyle.default) { 
     (finished) in 
     self.didReceiveRemoteNotificationAction() 
    }) 
    self.present(alert, animated: true, completion: nil) 

問題は次のとおりです。それは表示されません。誰も私になぜ説明することができますか?

私のストーリーボードは非常に...インタビューされていることがわかります。しかし、それは問題ではないはずですよね?

答えて

0

viewDidLoadがトリガーされると、ビューコントローラのビューはまだウィンドウ階層にはないため、アラートが表示されないのはこのためです。

警告プレゼンテーションコードをviewDidAppearの中に入れてください(viewDidLoadではなく)。

このanswerは同じ問題について話し、GCDを使用する代替オプションについて説明します。

このanswerは、viewDidLoadviewDidAppearについてよく議論されています。

幸運を祈る!

+0

ははるか*あなたは非常にMICH –

+0

に感謝! :Dそれは今作動する! –

0

これは、ViewDidLoadから呼び出すため、ビューがまだ設定されていないためです。 2つのオプションがあります。

  • ViewDidAppear(推奨)から呼び出します。
  • GCDのスレッドを使用して、それを呼び出します

    DispatchQueue.main.async { self.present(警告、アニメーション:真、完了:ゼロ) }

関連する問題