ios - UINavigationController 隐藏单个 View Controller 的导航栏

标签 ios objective-c uinavigationcontroller storyboard uinavigationbar

我知道它是重复的。但是仍然有问题,即使尝试了各种可能性也没有用。因此发布相同的内容以达成解决方案。希望得到大家的帮助。

初始嵌入在 UINavigationController 中。对于初始(着陆 View ),导航栏必须隐藏。从着陆 View 调用时的其他 View - 必须显示导航栏。

我通过覆盖 View 的方法来处理着陆 View 中导航栏的隐藏和显示,如下所示:

- (void)viewWillAppear:(BOOL)animated
{    
    [super viewWillAppear:animated];

    // Hiding the navigationbar hidden for the first page
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

//甚至尝试过 animated:NO & animated:animated

- (void)viewDidDisappear:(BOOL)animated
{    
    [super viewDidDisappear:animated];

    // Showing the navigationbar hidden for the first page
    [[self navigationController] setNavigationBarHidden:NO animated:YES];

}

当应用程序最初加载时,导航栏处于隐藏状态(如预期且工作正常)。当从 subview Controller 返回到着陆 View 时,导航栏会在几秒钟后隐藏 - 着陆 View 会加载到 ui 屏幕上。

我还尝试在着陆 View 中使用导航 Controller 委托(delegate)方法:navigationController: willShowViewController: animated:。但无法找到我需要的解决方案。

因此,我在我的一个 subview Controller 中提供了导航 Controller 委托(delegate),并使用 if 条件检查弹出时的子 Controller 是否不在导航 Controller 的 View Controller 中。如果是,那么我提供了导航栏的隐藏选项。但也没有解决。

在 surfed 期间,有一个解决方案可以处理 viewanimation。我试过了,但也失败了。

再次冲浪,提供的解决方案是处理与viewwillappear & viewwilldisappear类似的问题。我很惊讶,因为我正在做的方式与提议的方式相似。即便如此也无法达成解决方案。

仅供引用.. 我正在使用 Xcode 6.3,部署目标是 6.0 及更高版本。我正在使用 Storyboard来管理 View 。

请帮我解决问题... 应用程序加载隐藏着陆页中的导航栏。但是,当着陆页从 subview 加载回来时,只有在着陆页加载到用户界面后,导航栏才会隐藏。我确实需要隐藏导航栏,就像在加载应用程序时、弹出 subview 时以及在 Controller 顶部加载登陆 View 时一样。

最佳答案

如果你想在第二个 View 中隐藏导航栏,那么不要尝试在 viewWillAppear 和 viewWillDisappear 中进行管理,因为我通过这样的尝试遇到了很多问题并且它也影响了约束。只需在 appDelegate 中为导航 Controller 使用委托(delegate),它对我来说工作正常。

self.navigationController.delegate = self;

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
        if ([viewController isKindOfClass:[LoginViewController class]])
     {
            [self.navigationController setNavigationBarHidden:YES animated:animated];
        } else {
            [self.navigationController setNavigationBarHidden:NO animated:animated];
        }
    }

关于ios - UINavigationController 隐藏单个 View Controller 的导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30094191/

相关文章:

ios - 在不重新加载整个表的情况下更新 UITableView 中的特定行

iOS 核心数据按属性维护顺序

ios - 在 iOS7 中取消交互式弹出手势时如何将数据传递给子 Controller ?

java - 如何最轻松地在同一主机上运行的 Cocoa(客户端)和 Java(服务器)之间进行 IPC/RPC?

ios - 循环应用流程 - 需要创意

ios - 推送时数据未传递到 View Controller

ios - 分享图像和文本 WhatsApp api iOS

ios - 从 iPhone 照片库中选择一个视频

ios - iOS服务器端使用AES解密(需要了解的参数)

objective-c - 如何从 NSCollectionView 中删除所有项目?