質問

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];

を実行できます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top