美文网首页
【iOS UI】NavigationController重写pu

【iOS UI】NavigationController重写pu

作者: XIAO_WEN | 来源:发表于2017-05-16 14:52 被阅读1506次

主要内容:
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];
}

相关文章

网友评论

      本文标题:【iOS UI】NavigationController重写pu

      本文链接:https://www.haomeiwen.com/subject/faslxxtx.html