2016-11-10 42 views
3

DispatchQueueなどを使用して、alertControllerを即座に却下するボタンを押すのを待つのはとにかくありますか?UIAlertControllerが終了するまで自分のコードの実行をブロックすることはできますか?

+1

- http://stackoverflow.com/questions/37801436/how-do-i-write-dispatch-after-gcd-in-swift-3を参照してください。 –

+0

はい、私はそれについてkowですが、私がalertcontrollerを提示した後、ユーザが警告を棄却するまで待つ(コードを何も実行させない)ためにとにかく待っていますか? – Anthony

+1

あなたのコードの実行を止めて、ユーザが警告を消すまで、実行コードを 'UIAlertAction'のハンドラパートに追加します。 –

答えて

1

このような意味ですか?

alertController.displayAndWaitUntilDismissed() 
// This line is only reached after the alert controller is dismissed 
print("Alert controller dismissed.") 

理論的には、ディスパッチセマフォを使用して警告が解除されるまでブロックできます。しかし、それは悪い考えです - 私はそれが受け入れられるシナリオを考えることさえできません。アラートコントローラのアクションで目的のコードを実行するだけで、非同期に対処する必要があることを受け入れるだけです。

0

アラートが解除された後に実行するすべてのコードを別の方法に移動するだけです。 UIAlertActionsを追加するときは、すべてのアクションのhandlerパラメータでそのメソッドを呼び出します。このようにして、ユーザが押したボタンのうち、あなたのコードは常に実行されます!

関連する問題