对于我的代码结构:
在AppDelegate上,我为我的UITabBar声明了4个UINavigationController和他们自己的根UIViewController。
我创建了一个自定义UIViewController作为模板,其中我的其他UIViewControllers是子类。
在我的模板上: 我有我的rightBarButtonItem来显示当前的用户个人资料。
// public method added on template
- (void) goToProfile {
NSLog(@"going through...");
ProfileViewController *ctrl = [[ProfileViewController alloc] init];
[self.navigationController pushViewController:ctrl animated:YES];
}
对于我的leftBarButtonItem:
- (void) goBack {
[self.navigationController popViewControllerAnimated:YES];
}
首先点击rightBarButtonItem
,工作正常。如果我点击leftBarButtonItem
返回然后重新点击rightBarButtonItem
,它就不再有用了。
另外,我的一个UIViewController上有一个按钮,它调用公共方法goToProfile
。这很好。
答案 0 :(得分:0)
如果您正在使用UITabBar的UINavigation控制器推送或弹出
另外在UITab Bar ...中显示UINavigation Controllers。 Profile View控制器是否是UITab栏的一部分..
然后你需要改变标签栏的索引,如下所示
self.tabBarController.selectedIndex=0;//if profile is first tab
ProfileViewController *ctrl = [[ProfileViewController alloc] init];
[self.navigationController pushViewController:ctrl animated:YES];
希望它对你有所帮助......
答案 1 :(得分:0)
我得到了同事的帮助。这种方法类似于@ Vidhyanand900的答案。我希望这将有助于其他人。
tabbarSelectedIndex = 1; // profile tab index
ProfileViewController *ctrl = [[ProfileViewController alloc] init];
UINavigationController *navController = [_appDelegate.mainTabBarController.viewControllers objectAtIndex:tabbarSelectedIndex];
[navController pushViewController:ctrl animated:YES];
self.mainTabBarController.selectedIndex = tabbarSelectedIndex;