我正在开发iOS6
和iOS7
的应用。我刚刚发现了两种版本之间不同的奇怪行为。
我的应用有UITabbarController
个标签,每个标签为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;
}
UINavigationController
中的按钮。但是,任何后续推送都会显示tabbarVC
按钮。
在AppDelegate
上,我看到第一次按下后没有标题的后退按钮和后续按下后标题为 _tabBarVC = [[JBTabBarVC alloc] init];
[_tabBarVC setSelectedIndex:0];
[self.window setRootViewController:_tabBarVC];
的后退按钮。
这种行为是正常的吗?我不明白为什么会这样。无论VC
版本如何,每次推送后如何确保我都有一个后退按钮。
修改
为清晰起见,这是一些代码:
这就是我发起UITableView
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
JBNavigationVC是if (!_productsListVC) {
_productsListVC = [[JBProductsListVC alloc] init];
}
_productsListVC.category = category;
[self.navigationController pushViewController:_productsListVC animated:YES];
的子类。这是我转换到{{1}}
{{1}}
这会将第一个{{1}}设置为前面。此VC中包含{{1}},{{1}}我执行此操作:
{{1}}