PresentViewController 在 iOS 中隐藏导航栏

Posted

技术标签:

【中文标题】PresentViewController 在 iOS 中隐藏导航栏【英文标题】:PresentViewController hides Navigation bar in iOS 【发布时间】:2014-08-27 04:39:39 【问题描述】:

当我呈现PresentViewController 以导航屏幕时,我正在尝试显示导航控制器。我解决了这个问题,但我遇到了另一个问题。问题是当我按下一个屏幕时,时间后退按钮在导航控制器的下一个屏幕上可见。但是当我尝试PresentViewController 时,导航栏是可见的,但不是返回按钮。

这是我的代码:

 - (IBAction)clickMeAction:(id)sender
 
    ViewController1 *viewcontrol = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewID"];
    //[self.navigationController pushViewController:viewcontrol animated:YES]; // this is for push to viewcontroller


    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewcontrol];
    [self presentViewController:navigationController animated:YES completion:nil]; // This is for modalviewcontroller
 

这是我的输出:

带推:

带模态:

请帮帮我。

【问题讨论】:

当您以模态方式打开一个窗口时,无论是 Navigation Contoller 还是其他任何它都不会显示 Back 按钮,您必须手动设置它。 是的,它是一个导航控制器。 模态打开NC时没有返回按钮,需要手动设置。 @SRNayak 因为当您以模态方式打开任何 VC 时,内存中没有 VC 堆栈,但是使用导航控制器会在内存中创建 VC 堆栈以推送和弹出。 我认为@YogeshSuthar 试图传达的是,对于模态视图控制器,默认情况下不会显示后退按钮。这是苹果的设计。当您呈现一个模态视图时,它看起来像是呈现在当前视图之上,因此没有后退按钮。不过,您可以创建自己的栏按钮项来关闭视图。 【参考方案1】:

方法一:

[navigationController presentViewController:navigationController animated:YES completion:^
             [navigationController setNavigationBarHidden:YES animated:NO];
        ];

方法二:在presentViewController中

- (void)viewWillAppear:(BOOL)animated 
        [super viewWillAppear:animated];
        self.navigationController.navigationBarHidden = YES;

【讨论】:

以上是关于PresentViewController 在 iOS 中隐藏导航栏的主要内容,如果未能解决你的问题,请参考以下文章

如何在封面视图和主页中使用“presentViewController”

PresentViewController 在 iOS 中隐藏导航栏

SKScene 在 presentViewController 之后重复

PresentViewController:动画不显示在 iPad 上

在 Swift 中的 presentViewController 之后调用 pushViewController

presentViewController:动画:完成:失败