6

作成したタブ バー コントローラーのカスタム サブクラス内に Nav コントローラーがあります。

表示されているコントローラーの 1 つがタブ バーを非表示または表示しようとするたびに、(カスタム) タブ バー内から知りたいです。(たとえば、hidesBottomBarWhenPushed=YES を持つ VC を Nac コントローラーにプッシュする場合)。

要するに、タブバーを非表示/表示するイベントの通知を受け取りたいのですが、Apple のリファレンスには何も見つかりませんでした。UITabBar、UITabBarDelegate、UITabBarController、および UITabBarControllerDelegate を調べてみましたが、すべてタブ バー項目に関連する機能のみを提供しているようです。

前もって感謝します。

4

2 に答える 2

13

タブ バー コントローラーを使用している場合、UIKit は、タブ バー コントローラーのコンテキストに表示されるすべてのナビゲーション コントローラー インスタンスがそのviewControllersプロパティの中にあることを明示的に示します。これで、すべてのインスタンスにデリゲートがあり、View Controller がプッシュされたときに通知するメソッドがUINavigationController定義されます。navigationController:willShowViewController:animated:

タブ バー コントローラーを、プッシュされるすべてのナビゲーション コントローラーのデリゲートとして設定することで、プッシュされるビュー コントローラーにhidesBottomBarWhenPushedプロパティ セットがあるかどうかを分析し、その場合にイベントを生成できます。

タブ バー コントローラーのタブ バーを非表示にするために使用されるアルゴリズムは次のとおりです。 ビュー コントローラーが、それ自体がタブ バー コントローラーに含まれているナビゲーション コントローラーにプッシュされたとき、ナビゲーション コントローラーのナビゲーション スタック内のいずれかのビュー コントローラーがhidesBottomBarWhenPushedプロパティを持っている場合設定すると、タブ バーが非表示になります。

そのため、ナビゲーション コントローラーが選択され、そのスタック内のビュー コントローラーの 1 つにhidesBottomBarWhenPushedプロパティ セットがある場合、タブ バーは非表示になります。

于 2011-02-13T23:09:07.323 に答える
0

UINavigationController をサブクラス化し、hidesBottomBarWhenPushed の背後にあるセッターを実装し (または、UIViewController をサブクラス化して hidesBottomBarWhenPushed メソッドを直接サブクラス化し)、呼び出しを UITabBar に委任します (直接呼び出しまたは NSNotification を介して)。

于 2010-12-30T16:10:47.803 に答える