iOS:不同情节提要中的 presentViewController 未显示导航栏
Posted
技术标签:
【中文标题】iOS:不同情节提要中的 presentViewController 未显示导航栏【英文标题】:iOS: presentViewController in different storyboard is not showing navigation bar 【发布时间】:2017-05-11 17:40:48 【问题描述】:我正在不同的故事板中加载视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NewStoryBoard" bundle:nil];
NewViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"NewViewController"];
[self presentViewController:detailViewController animated:YES completion:Nil];
但未在设备中显示导航栏。你们中的任何人都知道为什么会发生这种情况,或者我该如何解决这个问题?
非常感谢您的帮助。
【问题讨论】:
在你的图片中,NewViewController
是一个普通的UIViewController
。如果您通过代码加载它,那么您不会加载 UINavigationController,因此当您 presentViewController
时,它不会将其推送到导航堆栈上...您在调用它吗来自已经 in NavigationController 的视图控制器的代码?
【参考方案1】:
试试这个
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NewStoryBoard" bundle:nil];
NewViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"NewViewController"];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:detailViewController];
[self presentViewController:navController animated:YES completion:Nil];
【讨论】:
【参考方案2】:与其从标识符实例化 ViewController,不如尝试使用 performegueWithIdentifier 进行转换。当您实例化 ViewController 时,它的创建独立于它所来自的 Navigation Controller。
-
打开 Storyboard 并单击 segue(视图控制器之间的箭头),并为其分配一个标识符,即“SegueToNewViewController”。
从作为导航控制器子级的 ViewController 调用以下方法:
[self performSegueWithIdentifier:@"SegueToNewViewController" sender:self];
这将执行从调用 ViewController 到新 ViewController 的 segue,包括 NavigationBar
【讨论】:
以上是关于iOS:不同情节提要中的 presentViewController 未显示导航栏的主要内容,如果未能解决你的问题,请参考以下文章