在 iOS7.1 中使用 show (push) segue 不会出现导航栏

Posted

技术标签:

【中文标题】在 iOS7.1 中使用 show (push) segue 不会出现导航栏【英文标题】:Navigation bar doesn't appear using show (push) segue in iOS7.1 【发布时间】:2015-11-07 12:22:28 【问题描述】:

我有三个设备,三个 ios 版本。我将导航栏隐藏在RootViewController 中。然后对于每个ViewController,我将导航栏显示为

- (void)viewDidLoad 
    [super viewDidLoad];
    self.view.userInteractionEnabled = YES;
    // Do any additional setup after loading the view.
    [self.navigationController setNavigationBarHidden:NO];
    CGRect frame = CGRectMake(0, 0, 0, 44);
    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont fontWithName:@"Helvetica-Bold" size:20.0];
    label.textAlignment = NSTextAlignmentCenter;
    label.textColor = [UIColor blackColor];
    label.text = @"Update Height";
    self.navigationItem.titleView = label;

它适用于 iOS8.4 和 iOS9.1 的两台设备,但不适用于 iOS7.1。对于 iOS7.1 设备,如果我将 segue 更改为自定义类型,则会显示导航栏。但是如果我更改为 Show (Push) segue,导航栏就不会出现。 可能是什么问题呢? 我使用了 UIStoryBoard 的 segue。 谢谢

【问题讨论】:

你确定导航栏没有隐藏在故事板上吗? 【参考方案1】:

阅读这个link 然后试试这个

 //hide on current view controller
  - (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];


// show on next view controller
- (void)viewWillDisappear:(BOOL)animated 
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];

【讨论】:

我试过了。它仍然是一样的。还是隐藏的。其他设备都可以,只有iOS7.1的设备不行。 然后像上面的功能对我来说在 5 个以上的项目上运行良好,如果你喜欢从 appdelegate 中删除隐藏的功能并添加基于视图控制器的导航控制器隐藏,肯定可以工作 另一种选择,在基于 iOS 7 的另一种选择中尝试 我注意到,如果从右侧弹出下一个 ViewController,导航栏仍然会出现,但是一旦从底部弹出下一个 View,导航栏就不会出现。有什么区别,ViewController 从侧面和底部弹出。 右侧表示你的导航是pushbottom表示你的导航是Present在此处的导航栏中不显示,导航控制器的导航栏只会显示该导航控制器包含的视图控制器。在这里,您正在呈现一个模态视图。它不包含在导航控制器中。

以上是关于在 iOS7.1 中使用 show (push) segue 不会出现导航栏的主要内容,如果未能解决你的问题,请参考以下文章

IOS7.1-7.1.1越狱后无法读取越狱文件的解决办法

Segue show(push) 没有出现在 Objective C 项目中

axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案

makeObjectsPerformSelector不适用于IOS7.1

vueRouter push问题的思考

xcode6 怎样下载ios7模拟器