2016-08-30 6 views
2

かなり単純な状況です。私は、フォームに記入するためのカスタムUIViewControllerを持っています。ユーザーがキャンセルボタンをクリックすると、アラートがポップアップ表示されます。 "あなたはフォームを終了してもよろしいですか?編集内容は保存されません"。彼らが正常にヒットした場合、VCはアニメーションを実行して閉じます。アニメーションを中断するiOS UIAlertController

私はアニメーションをUIAlertActionハンドラクロージャに配置しました。しかし、アニメーションは毎回瞬時に発生します。私は、UIAlertControllerがボタンを押した後に解除してVCのアニメーションを中断したときにアニメートするため、これが想定されています。

アイデア?基本的には、ボタンが押されるとすぐにハンドラが呼び出されているように見えます。どうすればUIAlertControllerが終了した後にハンドラを呼び出すことができますか?

編集:ここでは、問題を説明するためにいくつかのサンプルコードです:

let refreshAlert = UIAlertController(title: "Delete draft?", message: "Are you sure you want to discard this draft? It will not be saved.", preferredStyle: UIAlertControllerStyle.Alert) 

refreshAlert.addAction(UIAlertAction(title: "Delete", style: .Destructive, handler: { (action: UIAlertAction!) in 
    self.animationInPresentionVC() // This animation occurs instantly, it seems to be interrupted by the dismissing alert controller 
})) 

答えて

2

多分あなたはあなたのanimationInPresentionVCを(実行するためのいくつかの遅延を追加することができます):

refreshAlert.addAction(UIAlertAction(title: "Delete", style: .Destructive, handler: { (action: UIAlertAction!) in 
    self.performSelector(#selector(**your animationInPresentionVC**), , withObject: nil, afterDelay:0.3) 
})) 
+0

うんは、私がやってしまった厥、素晴らしい仕事...しかし、ハックのような感じ:(ありがとう! – Josh

関連する問題