拆分视图控制器必须是根视图控制器

时间:2010-04-05 17:30:31

标签: ios ipad uisplitviewcontroller

每当我尝试以模态方式呈现UISplitViewController时,应用程序崩溃。因此,它必须始终是根视图控制器。任何人都可以确认吗?

5 个答案:

答案 0 :(得分:21)

来自Apple iPad Programming Guide

  

拆分视图控制器的视图   应始终作为根安装   应用程序窗口的视图。您   永远不应该出现拆分视图   在导航或标签栏内   接口

所以是的,你不能在主应用程序窗口之外呈现拆分视图(包括模态)。

修改

上述文档的链接不再讨论此主题。现在可以在Apple的View Controller Catalog for iOS找到相关的讨论,其中陈述如下:

  

拆分视图控制器必须始终是您创建的任何接口的根。换句话说,您必须始终从UISplitViewController对象安装视图作为应用程序窗口的根视图。 [...]拆分视图控制器无法以模态方式显示。

答案 1 :(得分:3)

当我尝试从常规内容视图控制器中进行切换时(即没有问题从选项卡控制器或导航控制器中消失),我遇到了同样的错误。

幸运的是,我找到了一种方法来通过在VC和拆分视图控制器之间插入导航控制器来避免这种情况。换句话说,从VC到导航控制器的segue,然后在导航控制器和拆分视图控制器之间绘制关系连接。通过这种方式,实例化拆分视图仍然不需要编码。

答案 2 :(得分:2)

当然,您可以使用UISplitViewController而不将其用作根视图控制器。 在我的项目中,我使用它:

  1. 以模态方法显示我自己的viewcontroller:
  2. [self presentModalViewController:mainViewController animated:YES];
    
    1. 在mainViewController中,我有
    2. UISplitViewController *splitViewController;
      

      并在- (void)viewDidLoad中,将splitViewController.view设置为mainViewController.view

      splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
      self.view = splitViewController.view;
      

答案 3 :(得分:1)

UISplitController可以安装在UITabBarController下。我做到了只需在这个论坛上使用搜索 - 我找到了至少一个好的软件样本。

答案 4 :(得分:0)

是的,您必须使用RootViewController,它应该从UITableViewController继承。您可以查看此tutorial