【发布时间】:2010-11-25 17:09:33
【问题描述】:
我在我的应用程序中处理UINavigationControllers,所有这些都由UITabBarController 处理。一切正常,直到我的控制器进入自动生成的“更多”选项卡。
我在这个简单的例子中重现了这个问题。难道我做错了什么?我想不通。
感谢您的帮助。
#import【问题讨论】:
标签: iphone uinavigationcontroller uitabbarcontroller
我在我的应用程序中处理UINavigationControllers,所有这些都由UITabBarController 处理。一切正常,直到我的控制器进入自动生成的“更多”选项卡。
我在这个简单的例子中重现了这个问题。难道我做错了什么?我想不通。
感谢您的帮助。
#import【问题讨论】:
标签: iphone uinavigationcontroller uitabbarcontroller
简答:你不能嵌套导航控制器
更长的答案:你做错了。一个更好的方法来创建你想要的东西是这样的:
NSMutableArray *viewControllers = [NSMutableArray array];
[viewControllers addObject:[[[ConverterViewController alloc] init] autorelease]];
[viewControllers addObject:[[[UINavigationController alloc]
initWithRootViewController:[[[CurrencyViewController alloc] init] autorelease]] autorelease]];
[viewControllers addObject:[[[UINavigationController alloc]
initWithRootViewController:[[[HistoryViewController alloc] init] autorelease]] autorelease]];
[viewControllers addObject:[[[UINavigationController alloc]
initWithRootViewController:[[[SetupViewController alloc] init] autorelease]] autorelease]];
[viewControllers addObject:[[[UINavigationController alloc]
initWithRootViewController:[[[HelpViewController alloc] init] autorelease]] autorelease]];
[viewControllers addObject:[[[LinksViewController alloc] init] autorelease]];
self.viewControllers = viewControllers;
self.customizableViewControllers = [viewControllers arrayByRemovingFirstObject];
@implementation HelpViewController
#pragma mark -
#pragma mark Initialization
- (id)init
{
if ((self = [super initWithNibName:@"HelpView" bundle:nil]) != nil) {
self.title = NSLocalizedString(@"Help", @"Help");
self.tabBarItem.image = [UIImage imageNamed:@"question.png"];
}
return self;
}
【讨论】:
我认为问题可能在于您直接使用导航控制器来推送新视图。像这样:
[ctrl4 pushViewController:next animated:true];
但是,如果您在更多选项卡中,则另一个导航控制器处于活动状态。您必须始终使用当前显示的视图控制器的 navigationController 属性获取当前导航控制器。
通过这种方式,导航控制器可以在标签栏控制器中正常工作。
【讨论】:
当您在 UITabBarController 上设置 viewControllers 属性时,它将自动将视图控制器 5 上的导航控制器替换为 moreNavigationController。
我在自定义标签栏上处理了类似的问题。该解决方案应该可以帮助您:
Suppress moreNavigationController in custom UITabBarController
【讨论】: