美文网首页
隐藏导航条之后的push处理

隐藏导航条之后的push处理

作者: 不存在的昵称 | 来源:发表于2020-01-08 17:35 被阅读0次

隐藏导航条之后的push处理

缘由

使用ViewController内部调用NavigationViewController的API

[self.navigationController setNavigationBarHidden:YES animated:YES];

的时候,在界面跳转之间,导航条会出现一下

主要是在NavigationViewController处理

  • 自定义NavigationViewController,如ZHMainNavigationViewController,遵守
    UIGestureRecognizerDelegate,UINavigationControllerDelegate协议

    @interface ZHMainNavigationViewController ()<UIGestureRecognizerDelegate,UINavigationControllerDelegate>
    @end
    
    
  • 自定义一个隐藏导航条的协议ZHHiddenNavbar

    @protocol ZHHiddenNavbar <NSObject>
    @end
    
    
  • 实现如下方法

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController <UIGestureRecognizerDelegate>*)viewController animated:(BOOL)animated {
        //如果控制器遵守了ZHHiddenNavbar协议,则需要隐藏导航栏
        BOOL noNav = [[viewController class] conformsToProtocol:@protocol(ZHHiddenNavbar)];
        if (noNav) {  //隐藏导航栏后会导致边缘右滑返回的手势失效,需要重新设置一下这个代理
            self.interactivePopGestureRecognizer.delegate = viewController;
        }
        //设置控制器是否要隐藏导航栏
        [self setNavigationBarHidden:noNav animated:YES];
    }
    
    
  • 应用
    让想要隐藏导航条的控制器遵守ZHHiddenNavbar协议即可

    /// 英雄榜
    @interface ZHTikuBrushPlanRankViewController : UIViewController<ZHHiddenNavbar>
    @end
    
    

相关文章

网友评论

      本文标题:隐藏导航条之后的push处理

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