43

当我使用pushViewController从导航控制器推送时, 如何隐藏UIViewcontroller中的顶部栏?请问有什么帮助吗?

4

3 回答 3

116

将此代码放在要为其隐藏导航栏的视图控制器中。

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

根据您的需要,您可能还想将其粘贴在那里:

- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}
于 2009-10-24T17:18:53.817 回答
12

以下是在Swift 3中的操作方法:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

PS我发现如果你将动画设置为false,推送时会出现一个黑条。但是当它设置为true它时,它就像丝绸一样光滑!

于 2017-05-31T16:41:36.377 回答
1

对于 iOS 8 可能是这个解决方法可以解决它

CATransition* transition = [CATransition animation];
        transition.duration = 0.3;
        transition.type = kCATransitionPush;
        transition.subtype = kCATransitionFromRight;
        [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
        [self.navigationController setNavigationBarHidden:TRUE animated:FALSE];
        [self.navigationController pushViewController:productViewObj animated:FALSE];
        [productViewObj.navigationController setNavigationBarHidden:TRUE animated:FALSE];
        [productViewObj release];
于 2014-10-01T06:23:27.580 回答