9

タブバーがあり、ビュー「A」と「A」にナビゲーションコントローラーがあります。「A」のナビゲーションコントローラー内のSOを呼び出しました

[self presentModalViewController:modalView animated:YES]

しかし modalView はタブバーの下に表示されます。タブバーの上に表示するには?

4

4 に答える 4

21

からモーダル ビューを提示してみてくださいUITabBarController:

[self.tabBarController presentModalViewController:modalView animated:YES];
于 2012-07-29T09:12:29.423 に答える
3

私の場合、提示されたView ControllerにはUIModalPresentationStyle.CurrentContextat.modalPresentationStyleがあり、tab barオーバーラップが発生しました

問題を解決するためにデフォルト値に戻すだけです

于 2016-05-06T16:25:43.223 に答える
1

これの原因は、祖先の viewController が正しく設定されていないことです。たとえば、次のように想像してください。

UIViewController * myController = ... // a view controller without a proper ancestor

今:

myController.tabBarController == nil

したがって:

[myController presentModalViewController:otherController];

失敗します (タブ バーの下に表示されます)。修正は、 myController をその祖先に追加することです

[parentController addChildViewController:myController];

次に、parentController同じ方法で別のコントローラーに追加する必要があります。ルートコントローラーが tabController になるまで繰り返します。これは、iOS 5 以降でのみ使用できます。iOS 4 以前用にビルドする場合は、すべてのコントローラーが UINav または UITab コントローラーに直接追加されていることを確認して、これを回避する必要があります。これが不可能な場合は、グローバル変数を介して UITabBarController にアクセスする必要があります。

于 2012-09-12T19:14:12.060 に答える