【问题标题】:iOS: presentViewController in different storyboard is not showing navigation bariOS:不同情节提要中的 presentViewController 未显示导航栏
【发布时间】: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 的视图控制器的代码?

标签: ios objective-c iphone uistoryboard


【解决方案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。

    1. 打开 Storyboard 并单击 segue(视图控制器之间的箭头),并为其分配一个标识符,即“SegueToNewViewController”。
    2. 从作为导航控制器子级的 ViewController 调用以下方法:

      [self performSegueWithIdentifier:@"SegueToNewViewController" sender:self];

    这将执行从调用 ViewController 到新 ViewController 的 segue,包括 NavigationBar

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2017-09-17
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多