タブバーがあり、ビュー「A」と「A」にナビゲーションコントローラーがあります。「A」のナビゲーションコントローラー内のSOを呼び出しました
[self presentModalViewController:modalView animated:YES]
しかし modalView はタブバーの下に表示されます。タブバーの上に表示するには?
タブバーがあり、ビュー「A」と「A」にナビゲーションコントローラーがあります。「A」のナビゲーションコントローラー内のSOを呼び出しました
[self presentModalViewController:modalView animated:YES]
しかし modalView はタブバーの下に表示されます。タブバーの上に表示するには?
からモーダル ビューを提示してみてくださいUITabBarController
:
[self.tabBarController presentModalViewController:modalView animated:YES];
私の場合、提示されたView ControllerにはUIModalPresentationStyle.CurrentContext
at.modalPresentationStyle
があり、tab bar
オーバーラップが発生しました
問題を解決するためにデフォルト値に戻すだけです
これの原因は、祖先の 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 にアクセスする必要があります。