dismissModalViewControllerAnimatedがいつ開始され、完了したかを知る方法はありますか(viewWillAppearとviewDidAppearのイディオムなど)?他のアニメーションとは異なり、この1つでは、あなたに伝える代表者がいないようです。dismissModalViewControllerAnimatedが開始されたときと完了したときを知る方法?
答えて
はい、あなたが考えるよりも簡単です。
dismissModalViewControllerAnimated:が呼び出されると、表示されているビュー(viewWillAppear)が表示され、viewDidAppearメッセージが表示されます。
注意:View Controllerが正しく接続されているか、これらのメッセージが失われているかどうかを確認してください。
私は怖いですviewWillAppearとviewDidAppearは必ずしも機能しません。 iPhoneで がそうですが、iPadではそうではありません。 提示されたUIViewControllerがフルスクリーンで表示されない場合(たとえば、フォームシートとして表示される場合)、親ビューはviewWillAppearまたはviewDidAppearライフサイクル関数を受け取りません。残念ながら私が見つけた唯一の方法は、dismissModalViewControllerAnimatedが呼び出されたときに呼び出される独自のデリゲートメッセージを作成することです(参照または通知によるエーテル)
ビューの外観メソッドを使用できます。アニメーションの完了後に何かが必要な場合は、[object performSelector:@selector(selector) withObject:anotherObject afterDelay:0]
を使用できます。理由は分かりませんが、アクションは現在の実行ループでスケジュールされますが、アニメーションが完了した後にスケジュールされます。
iOS 5以降では、-dismissViewControllerAnimated:completion:を使用し、アニメーションが完了した後に完了ブロックを使用して何かを行います。 –
ありがとう、私の代表者の署名が間違っていたので、私はそれが終了したときに呼び出されていないと思った。 – Boon
この委任署名はどのように見えるのですか? – AlvinfromDiaspar
私はviewDidAppearとviewDidAppearの両方を実装しました。 modalviewcontrollが(部分的なcurlupスタイルとして)呼び出されると、これらのデリゲートは呼び出されません。何か案は? – AlvinfromDiaspar