我正在为iOS6和开发一个应用程序iOS7。我刚刚发现了一个奇怪的行为,在两个版本之间有所不同。
我的应用程序有UITabbarController3 个选项卡,每个选项卡都UINavigationController在其中。
当iOS6我push对这些navControllers中的任何一个执行第二次操作时ViewController,root不会back在navigationBar. 但是,任何后续按下都会显示该back按钮。
但是,在iOS7第一次按下后,我看到一个没有标题的后退按钮,"Back"在随后的按下后看到一个带有标题的后退按钮。
这种行为正常吗?我不明白为什么会这样。OS无论版本如何,我如何确保每次按下后都有一个后退按钮。
编辑
为了清楚起见,这里有一些代码:
这就是我启动的方式UITabBarController
- (id)init {
self = [super init];
if (self) {
NSMutableArray *vcs = @[].mutableCopy;
JBNavigationVC *navVC = nil;
if ([JBUser sharedInstance].isLoggedIn) {
_productCategoryVC = [[JBProductCategoryVC alloc] init];
_productCategoryVC.title = @"Products";
navVC = [[JBNavigationVC alloc] initWithRootViewController:_productCategoryVC];
[vcs addObject:navVC];
_triviaVC = [[JBTriviaVC alloc] init];
_triviaVC.title = @"Trivia";
navVC = [[JBNavigationVC alloc] initWithRootViewController:_triviaVC];
[vcs addObject:navVC];
_infoVC = [[JBInfoVC alloc] init];
_infoVC.title = @"Info";
navVC = [[JBNavigationVC alloc] initWithRootViewController:_infoVC];
[vcs addObject:navVC];
}
self.viewControllers = vcs;
}
return self;
}
JBNavigationVC 是UINavigationController. 这就是我过渡到tabbarVCinAppDelegate
_tabBarVC = [[JBTabBarVC alloc] init];
[_tabBarVC setSelectedIndex:0];
[self.window setRootViewController:_tabBarVC];
这将第一个设置在VC前面。这个VC里面有一个UITableView,- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath我这样做:
if (!_productsListVC) {
_productsListVC = [[JBProductsListVC alloc] init];
}
_productsListVC.category = category;
[self.navigationController pushViewController:_productsListVC animated:YES];