美文网首页
【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