Tabbar无法访问Navigationcontroller

时间:2009-07-29 20:14:29

标签: iphone sdk uinavigationcontroller uitabbarcontroller

我有一个navigationController应用程序。

我将一个标签栏推到视图上。标签正在改变工作标题,完美。现在我的一个标签有一个列表,我尝试链接到标签栏中的子页面:

NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];

什么都没发生。这课程有效:

self.view = nextController.view;

我希望能够在我的标签栏中推送到此子页面并更改导航栏按钮。这可能吗?

3 个答案:

答案 0 :(得分:3)

听起来你正在将UITabBarController推到UINavigationController上?从Apple's documentation,您无法将标签栏控制器推到导航控制器上。

你可能想要做的是相反的:有一个带有UINavigationController s的标签栏控制器作为标签项。这类似于iPod应用程序或手机应用程序中的界面。

答案 1 :(得分:0)

我同意Alex - 导航控制器中的TabBarController似乎不是一个很好的UI模式。

无论如何,要回答您的问题:您是否尝试通过标签栏控制器访问导航控制器?

self.tabBarController.navigationController

我不确定这是否有效,但你可以尝试一下。

答案 2 :(得分:0)

我想我找到了一个简单的解决方案。

在您要推送视图的班级中,将本地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];