iPhone仅在第一页上隐藏导航栏

我有下面的代码隐藏并显示导航栏。它在第一个视图加载时隐藏,然后在调用“children”时隐藏。麻烦的是,当他们回到根视图时,我找不到触发它再次隐藏的事件/动作....


我在根页面上有一个“测试”按钮,用于手动执行操作,但它并不漂亮,我希望它是自动的。


-(void)hideBar 

{

    self.navController.navigationBarHidden = YES;

}

-(void)showBar 

{       

    self.navController.navigationBarHidden = NO;

}


潇湘沐
浏览 623回答 3
3回答

倚天杖

我发现最好的解决方案是在第一个视图控制器中执行以下操作。Objective-C的- (void)viewWillAppear:(BOOL)animated {    [self.navigationController setNavigationBarHidden:YES animated:animated];    [super viewWillAppear:animated];}- (void)viewWillDisappear:(BOOL)animated {    [self.navigationController setNavigationBarHidden:NO animated:animated];    [super viewWillDisappear:animated];}迅速override func viewWillAppear(animated: Bool) {    self.navigationController?.setNavigationBarHidden(true, animated: animated)    super.viewWillAppear(animated)}override func viewWillDisappear(animated: Bool) {    self.navigationController?.setNavigationBarHidden(false, animated: animated)    super.viewWillDisappear(animated)} 当您按下UIViewController堆栈上的下一个时,这将导致导航栏从左侧(与下一个视图一起)动画,并在您按下后面的后退按钮时向左移动(与旧视图一起)UINavigationBar。请注意,这些不是委托方法,您要覆盖UIViewController这些方法的实现,并且根据文档,您必须在实现中的某处调用super的实现。

繁星淼淼

我必须对其他答案进行一些轻微的调整,只是取消隐藏在viewWillDisappear中的栏,如果它消失的原因是由于推送了导航项目。这是因为视图可能因其他原因而消失。所以如果这个视图不再是最顶层的视图,我只会取消隐藏栏:- (void) viewWillDisappear:(BOOL)animated{    if (self.navigationController.topViewController != self)    {        [self.navigationController setNavigationBarHidden:NO animated:animated];    }    [super viewWillDisappear:animated];}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS