0

私は問題があります。私はthree20を使用しており、TTYoutubeViewを使用しています。この問題を修正するには、必ずしもthree20の知識は必要ありません。

私の問題は、ナビゲーションバーにカスタムのdrawMethodがありますが、YouTubeビデオをロードするときに、カスタムの描画メソッドを無視するように指示する必要があります(これは問題ではありません。これを実行できるグローバルBOOLがあります) )。

私の問題は、YouTubeビデオがロードされたときに検出する方法がないことです。これは、UIWebview内のオブジェクトを介して起動されるため、UITouchがキャッチできず、YouTubeビデオが終わった後のように、UIWebviewをサブクラス化するのが好きではありません。却下されました、私もこれを捕まえる方法がありません。

私が必要としているのは、ナビゲーションバーが描画されるたびに「現在のviewControllerはどのクラスですか」と尋ねるメソッドであり、表示されているものに応じて何を描画するかを指示できます。

NSLog(@"%@",[TTNavigator navigator].topViewController);
NSLog(@"%@",[TTNavigator navigator].visibleViewController);

drawメソッドでviewControllersをログアウトしています。これは完全に機能し、コードは次のようにログに記録されます。

2010-09-08 16:39:23.171 MyApp[3512:307] <HomeController: 0x264df0>
2010-09-08 16:39:23.174 MyApp[3512:307] <HomeController: 0x264df0>

問題は、YouTubeビデオが読み込まれるときに、modalViewControllerが読み込まれているように見えることですが、私のコードは、このmodalControllerの下にあるviewControllerを引き続きログアウトします。何が一番上にあるかはわかりません。

viewControllerを検出することは、私が考えたときは明るい火花のように見えましたが、それでも私にとっては良い考えです。現在どのビューが一番上にあるかをどのように見つけることができるかについて、私はちょうど途方に暮れています。(topViewControllerとvisibleViewControllerはこれを正確に行っていないようです)

4

1 に答える 1

2

たくさん検索した後、私は、広範なサブクラス化なしでは、YouTubeオブジェクトまたはその中で起こっている出来事に関するWebビューからのコールバックを取得できないことに気付きました。

プッシュされたviewControllerがロードされた後にnavBarが描画されることに気づきました。また、そのmodalViewControllerは、navigationControllerの「スタック」のtopViewControllerの上にあり、modalViewControllerが閉じられたときにnavBarを再描画する必要はありません...

結局、私はこれをしました。

私のnavBar描画メソッドでは、BOOLをチェックして適切に描画した後、チェックを行います。

if ([[TTNavigator navigator].topViewController isKindOfClass:[VideoController class]]) {
    kDrawNavBar = FALSE;
}

これは、私のvideoController(youtube webview / buttonが含まれているもの)がロードされると、BOOLが変更されることを意味します。そのため、私の手にない新しいmodalViewControllerが読み込まれると、カスタムイメージではなく、デフォルトのnavBarが描画されます。

あとは、videoControllerのnavBarコントローラーの戻るボタンアクションをオーバーライドして、kDrawNavBar = TRUE;このビューを終了し、「ホーム画面」に戻ると、すべてが正常に戻るように設定するだけでした。

うまくいけば、これは将来誰か他の人を助けるでしょう。

于 2010-09-09T14:02:55.147 に答える