TabbarがNavigationcontrollerにアクセスできない
-
05-07-2019 - |
質問
navigationControllerアプリがあります。
タブバーをビューにプッシュします。タブが動作しているタイトルが変更され、完璧です。現在、私のタブの1つにリストがあり、タブバー内の子ページにリンクしようとしています:
NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];
何も起こりません。これが機能するコース:
self.view = nextController.view;
タブバー内でこのサブページにプッシュし、ナビゲーションバーのボタンを変更したい。これは可能ですか?
解決
UITabBarController
を UINavigationController
にプッシュしているようですね。 Appleのドキュメントでは、Tab Bar ControllerをNavigation Controllerにプッシュすることはできません。
おそらくあなたがしたいことは反対です。タブ項目として UINavigationController
sを持つTab Bar Controllerを用意します。これは、たとえばiPodアプリや電話アプリのインターフェースに似ています。
他のヒント
アレックスに同意します。NavigationController内のTabBarControllerは素晴らしいUIパターンのようには見えません。
とにかく、質問に答えるために:Tab Bar Controllerを介してNavigation Controllerにアクセスしようとしましたか?
self.tabBarController.navigationController
これが機能するかどうかはわかりませんが、試してみることができます。
簡単な解決策を見つけたと思います。
ビューをプッシュするクラスで、ローカルの UINavigationController
をプロパティとして宣言します:
@interface userMenu : UIViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;
忘れずに合成してください。
tabBarController
のクラス内:
NSArray *viewControllersArray = [self.tabBarController viewControllers];
userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;
その後、 [self.navigationController pushViewController:nextController animated:YES];