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 未显示导航栏的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在模拟器上的显示与在情节提要中的不同

如何在一个 tableView 中使用两个不同的自定义单元格?使用情节提要,iOS 7

本地化情节提要 iOS xcode 6

使用情节提要时iOS目标c中的合并冲突是啥

IOS。如何从情节提要中的图像进行布局?

Xamarin iOS:从情节提要中的 UICollectionViewCell 获取信息