4

進行中のモーダル移行をすべてキャンセルする方法を探しています。

アプリのライフサイクルのいつでも新しいView Controllerをプッシュする必要があるため、 viewDidAppearデリゲートに頼ってこの新しいビューのプレゼンテーションを開始することはできません。

1 つのモーダル トランジションが既に発生しているときに、(アニメーションを使用して) 新しいコントローラーをプッシュしようとすると、「キャッチされていない例外NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from to while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completedがクラッシュしたため、アプリを終了しています。

私の唯一の選択肢は、アニメーションなしで新しいコントローラーをプッシュするか、保留中のすべてのモーダル遷移をキャンセルする方法を見つけることです。

何か助けはありますか?

4

1 に答える 1

1

あなたが提案したアプローチを使用しました:

「アニメーションなしで新しいコントローラーを押す」

プッシュやプレゼンはアニメーションを使わなくてもいいので、それでいいと思います。@Spynetが提案したことについて:

addSubView を追加してアニメーションを実行する方が良いです。モーダルやプッシュのような手段は本当に必要ありません...

UIViewController's UIViews他のものを混ぜてはいけませんUIViewController('s)。たとえば、回転のロジックが失われます。また、 のロジックと動作UIViewも失われます。必要に応じて、UIViewControllerコンテナを簡単に作成して操作できます。WWDC ビデオに素晴らしいビデオがあります。

于 2012-09-11T06:49:05.217 に答える