在 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 从侧面和底部弹出。 右侧表示你的导航是push,bottom表示你的导航是Present在此处的导航栏中不显示,导航控制器的导航栏只会显示该导航控制器包含的视图控制器。在这里,您正在呈现一个模态视图。它不包含在导航控制器中。以上是关于在 iOS7.1 中使用 show (push) segue 不会出现导航栏的主要内容,如果未能解决你的问题,请参考以下文章
Segue show(push) 没有出现在 Objective C 项目中
axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案