4

私はこの問題を解決しようと精神的に近づいています:

状況:

私はかなり基本的なアプリケーション、アイテムが押されたときに uitabbarcontroller にリンクする tableview を持つ MMDrawerController を持っています。その最初のページ内には、埋め込まれた youtube UIWebView があり、これを押すと youtube ビデオフルスクリーンが再生されます。

これが何が起こっているかです。

  1. ビデオを押すと、フルスクリーンで開き、再生が始まります
  2. UITabBar viewWillDisappear が発生する
  3. ルート MMDrawerController viewWillAppear が起動する
  4. ビデオ終了
  5. ユーザーが開始した UITabBar に戻り、以前に「消えた」にもかかわらず、すべてが正常に見える

ここで、2 つのビューの ViewWillAppears / Disappears にブール値を入力して、アプリの現在の状態を確認します。通常、テーブルが開いているか、uitabbarcontroller が開いていることを示す 0,1 です。ビデオの後に、0,0 が表示されます。ナビゲーションを押し戻すと、どこからでもナビゲートするときに「外観の遷移を開始/終了するためのアンバランスな呼び出し」が表示されます。

今、YouTubeビデオの開始を聞いてから発砲すると:

[self.navigationController popToRootViewControllerAnimated:NO];

アンバランスな通話が発生するのを防ぐことができ、ユーザーは引き続きアプリを操作できます。しかし、彼らはビデオを見ることができず、ただ見返されるだけです。

3. と同様に、2 つのコントローラーで 0, 0 を確認してから、アプリ全体をほぼ再起動できます。しかし、それは良い解決策ではありません。

意図した結果:

ユーザーは uiwebview を押してビデオを見ることができ、その後中断したところに戻ります。彼らがナビゲーションコントローラーに反撃した場合、バランスの取れていない外観遷移はありません。


私はたくさんのものを試しました

[self.navigationController poptoViewController:...]


この時点で収集したことから、ルートコントローラーにロードされているフルスクリーンビデオと関係があります (したがって、viewWillAppear は 3 で起動します)。しかし、後で正しく「配置」されません。何かのようなもの

[self.navigationController heyTheUserIsPresentlyIn:self]

ビデオが消えた後に電話できるのは、非常に良いことです。

私は何時間もこれに取り組んできましたが、どんな支援も大歓迎です.私がバカなら、ドキュメントや本のセクションへのリンクが大いに役立ちます. ありがとう。

4

2 に答える 2

3

ViewControllerライフサイクルの問題のようです。

から に移動しUITableViewてもUITabBarControllerよろしいですか? 後者は通常ルートViewControllerでありviewWillDisappearviewWillAppearこの仮定に基づいて作成される可能性があるため、削除してみてください。

ルートではないタブ付きのようなコントロールが必要な場合はViewController、独自のロールを検討してください。

于 2013-10-25T20:40:12.517 に答える
1

これは、ナビゲーション アニメーションまたはアニメーションのシーケンスが
最初のアニメーションを適切に終了せずに開始されたときに発生するため、アニメーションについても同じことが推測できます
。Navigation Controller が原因でなくても、アニメーションを処理してください。
それがあなたを助けることを願っています

于 2013-10-25T04:06:23.573 に答える