【问题标题】:toggling the UINavigationController bar in iOS between segues在 segues 之间切换 iOS 中的 UINavigationController 栏
【发布时间】:2014-01-14 22:41:48
【问题描述】:

我对 iOS 还是很陌生。我有一个带有嵌入式 UINavigationController 的 UIViewController,我通过将此代码添加到 viewDidLoad 方法来隐藏第一个视图上的栏:

if (self) {
    self.navigationController.navigationBarHidden = YES;
    self.navigationItem.title = @"";
}

然后我将这个 View 连接到另一个 UIViewController 与一个序列(由第一个 View 上的按钮触发)并将这段代码添加到它的 viewDidLoad 方法中:

if (self) self.navigationController.navigationBarHidden = NO;

一开始一切正常。当我加载应用程序时,导航栏消失了,当我导航到第二个(子)视图时,导航栏就在那里。然后当我点击后退按钮时,它会返回到第一个(父)视图但 NavBar 又回来了。

我尝试添加命名序列“BackToMain”并添加我放置在第二个视图中的 prepareSeque 方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"BackToMain"]) {

        UINavigationController *parentNavigationController = segue.destinationViewController;
        parentNavigationController.navigationController.navigationBarHidden = YES;
    }
}

但它永远不会被调用。

理想情况下,我会在父视图中放置一个方法,以便在每次显示 NavBar 时简单地隐藏它。类似的东西:

- (void)processIncomingSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
 if (self) self.navigationController.navigationBarHidden = NO;
}

但我真的不知道这是否可能。

【问题讨论】:

    标签: ios objective-c uiviewcontroller uinavigationcontroller


    【解决方案1】:

    将以下代码放入您应该UINavigationBar的视图控制器中。

    - (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];
    }
    

    【讨论】:

    • 完美!重播速度如此之快。非常感谢 Pfitz。
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多