标签:uibarbuttonitem uinavigationcontroll 导航 uibutton cocoapods
最近项目需要,我们需要使用两个tabbar,因为之前一直是使用单个tabbar,突然来了两个tabbar,我有点没有思路了.
特别是关于两个tabbar之见的跳转,我在网上查了一下,发现资料非常少.后来经过一番苦思冥想,终于找到解决方法了.
我是这样解决的,就是在ATabBar中写了一个UIButton,然后通过Push跳转到第二个BTabBar页面上,
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = @"首页";
//在ATabBar中写了一个UIButton
UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(100, 100, 100, 100);
[button setTitle:@"明星" forState:UIControlStateNormal];
[button addTarget:self action:@selector(didClickButtonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
- (void)didClickButtonAction
{
//第二个BTabBar
StarTabBarViewController * starTabBar = [[StarTabBarViewController alloc]init];
//隐藏tarBar
self.tabBarController.tabBar.hidden = YES;
//隐藏导航栏
self.navigationController.navigationBarHidden = YES;
[self.navigationController pushViewController:starTabBar animated:NO];
}
其中,因为第二个BTabBar上面也有TabBar,也有导航栏,所以我们需要把第一个TabBar的导航条跟TabBar隐藏了.
当我完成这一步,我发现问题来了,我回不去了,我pop回不到第一个ATabBar了.
这个时候,我尝试各种pop方法,但是回不去,后来我好好整理了一下思路,发现Push的是starTabBar, 那么pop回去的也应该是starTabBar,而不是我们常见的
[self.navigationController popToRootViewControllerAnimated:YES];(这样是错误的)
正确的写法是:
UIBarButtonItem * leftItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(didClickLeftItemAction)];
self.navigationItem.leftBarButtonItem = leftItem;
- (void)didClickLeftItemAction
{
[self.tabBarController.navigationController popToRootViewControllerAnimated:YES];(这样才正确)
}
标签:uibarbuttonitem uinavigationcontroll 导航 uibutton cocoapods
原文地址:http://blog.csdn.net/zuoyou1314/article/details/41044135