2016-08-04 12 views
0

この機能は私のviewDidLoadで呼び出されます。エラーは発生しませんが、何も起こりません。私はそれを印刷するように言ったので、間違いなく呼び出されている、それは働いた。ここで迅速にポップアップするのに苦労している

は、アラートのコードです:

func makeAlert() 
    { 
     let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) 
     // Create the actions 
     let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { 
     UIAlertAction in 
     NSLog("OK Pressed") 
     } 
     let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { 
     UIAlertAction in 
     NSLog("Cancel Pressed") 
     } 
     // Add the actions 
     alertController.addAction(okAction) 
     alertController.addAction(cancelAction) 
     // Present the controller 
     self.presentViewController(alertController, animated: true, completion: nil) 
+1

はViewDidAppearでmakeAlert()を呼び出すようにしてください。 –

+0

それはとても感謝しました – Steve

+0

うまくいきました。viewDidLoadに多くのコードを入れないと、ビューの遷移に遅れます。 –

答えて

1

問題ここにあなたが提示ビューコントローラ(あなたのviewDidLoadと1)が画面上に表示される前に、あなたのalertControllerを表示しようとしているということです。 viewDidLoad()は、ビューコントローラがメモリにロードされた後に呼び出されます。ビューがビュー階層内にある場合は必ずしもそうではありません。

したがって、viewDidAppear(_:)makeAlert()を呼び出す:

override func viewDidAppear(animated: Bool) { 
    makeAlert() 
} 

これはあなたのビューコントローラが既に表示されていることを保証し、あなたのalertControllerを提示することができます。ここについてviewDidLoad()viewDidAppear(_:)を読む

は便利です: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/