【问题标题】:Present ViewController on UISplitViewNavigator's MasterViewController在 UISplitViewNavigator 的 MasterViewController 上呈现 ViewController
【发布时间】:2014-11-04 10:56:37
【问题描述】:

我使用 SplitViewNavigator 模板创建了一个新的 XCode 项目。 MasterViewController 的其中一个 navigationItem 应该显示一个配置 ViewController(iPhone 上的全屏,iPad 上的弹出窗口)。

此配置控制器已在单独的故事板 (Filter.storyboard) 中创建。 在这个故事板中,我将 ViewController 拖到舞台上并将其嵌入到导航控制器中(编辑器 -> 嵌入 -> 导航控制器),因为配置本身由用户可以通过的不同屏幕组成。 NavigationController 已被赋予 StoryBoard ID“FilterNavController”。

我已经在其他应用程序中多次这样做了,所以这确实有效。不幸的是,我无法让它与 SplitViewNavigator 模板一起使用。

这是我在点击按钮后尝试打开过滤器控制器的方法,没什么特别的;

UIStoryboard *filterBoard = [UIStoryboard storyboardWithName:@"Filter" bundle:nil];
UINavigationController *filterNavController = [filterBoard instantiateViewControllerWithIdentifier:@"FilterNavController"];
UIViewController *vc = [filterNavController.viewControllers objectAtIndex:0];

[self.navigationController presentViewController:vc animated:YES completion:nil];

self 是 MasterViewController。

从我没有受过教育的角度来看,我看不出有什么理由不这样做。正如我所说,它适用于其他(非 SplitViewNavigator 模板)应用程序。 我收到的错误消息如下:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <UINavigationController: 0x7f9bab61a700>.'

不知道这里到底发生了什么,但这已经花了我半天的时间。 有趣的是,当我在 Filter.storyboard 上创建一个 UIViewController 并设置它的 StoryBoardID 时,就会显示 ViewController。但是,我需要将它嵌入 UINavigationController。

任何帮助将不胜感激!

【问题讨论】:

    标签: ios objective-c cocoa-touch uisplitviewcontroller


    【解决方案1】:

    为了完整起见,以下方法非常适用于从 Storyboard 实例化 ViewController。

    无需在 Storyboard 上创建 UINavigationController,只需创建 ViewController(s) 并将它们嵌入代码中的 UINavigationController。

    UIStoryboard *myBoard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
    MyViewController *menuController = [myBoard instantiateViewControllerWithIdentifier:@"MyViewController"];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myController];
    [self presentViewController:navController animated:YES completion:nil];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2018-03-07
      • 2017-06-25
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      相关资源
      最近更新 更多