主要内容:
1、push时隐藏自定义tabBar;2、自定义返回按钮
一、重写push方法
在新控制器入栈之前,隐藏自定义tabBar,设置新控制器导航条的返回按钮,完后调用父push方法入栈。
push
/**
* 重写Push方法(隐藏底部的tabbar)
*/
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
//当存在子控制器时才隐藏tabBar
if (self.viewControllers.count>0) {
// 隐藏自定义tabBar
[[APPDELEHGATE xTabBarController]xTabBar].hidden = YES;
// 初始化按钮
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.frame = CGRectMake(0, 0, 44, 44);
backBtn.backgroundColor = [UIColor yellowColor];
[backBtn setImage:[UIImage imageNamed:@"back_button"] forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
backBtn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
// 设置左上角按钮
viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
}
// push入栈
[super pushViewController:viewController animated:animated];
}
二、重写pop方法
若即将到栈底,则要显示自定义的tabBar。
pop
/**
* 重写Pop方法(显示底部的tabbar)
*/
- (UIViewController *)popViewControllerAnimated:(BOOL)animated{
//判断即将到栈底
if (self.viewControllers.count == 0) {
//显示自定义的tabBar
[[APPDELEHGATE xTabBarController]xTabBar].hidden = NO;
}
// pop出栈
return [super popViewControllerAnimated:animated];
}