

viewDidAppear()内でUIAlertControllを使用したアラート画面を表示し、ボタンが押されるまで待つようしたいです。(iOS11)  
下記の処理を実装しましたが、アラート画面が表示されず画面のタップもできない状態になります。

非同期や遅延実行によるアラート画面呼び出しは問題なくアラート画面が表示されます。  
同期をとる何かいい手段はないでしょうか？

[code]

    override func viewDidAppear(_ animated: Bool) {
    
        super.viewDidAppear(animated)
    
        var doneloop = false
    
        let alert = UIAlertController(title:"タイトル", message: "メッセージ", preferredStyle: UIAlertControllerStyle.alert)
    
        let action1 = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {
            (action: UIAlertAction!) in
            print("push OK button")
    
            doneloop = true // Runloopを抜ける
        })
    
        alert.addAction(action1)
    
        self.present(alert, animated: false, completion: nil)
    
        // ボタンがクリックされるまで待機
        while !doneloop {
            RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.1))
        }
    
        alert.dismiss(animated: false, completion: nil)
    }
    
[/code]


CC BY-SA 3.0
2018-04-16T06:31:09.680
43287
2018-04-16T06:31:09.680
28145
question
swift ios
iOS viewDidAppear()でアラート画面を同期的に表示したい。