【问题标题】:Storyboard, UIViewController and UISplitViewController故事板、UIViewController 和 UISplitViewController
【发布时间】:2023-03-05 18:54:01
【问题描述】:

尝试为 iPad 制作基于故事板的应用程序。在其中,我需要从开始屏幕(UIViewController)转换到主屏幕(UISplitViewController),然后转换到全屏视图(再次是 UIViewController)。

我在网上看到了一些讨论(至少有几个 - 在 stackoverflow 上),指出 UISplitViewController 不能在基于 Storyboard 的应用程序中使用,除了作为 RootViewController 之外的任何其他方式。一些线程包含解决方法,还有替代的 splitview (https://github.com/mattgemmell/MGSplitViewController) 来解决这个问题。

但我不明白为什么 Apple 文档中的说法恰恰相反。这是来自 Apple 的 iOS 5.0 库的章节的link。它指出:


使用情节提要创建拆分视图控制器

要将拆分视图控制器添加到应用程序的情节提要:

  1. 打开应用程序的主故事板。
  2. 将拆分视图控制器拖出库。这也创建了视图控制器 用于拆分视图控制器的两个窗格。
  3. 对于每个拆分视图控制器包含的视图控制器,使用身份检查器设置视图控制器的类名。

要显示拆分视图界面,​​请执行以下操作之一:

  • 通过选择场景并检查,将其显示为第一个场景 属性检查器下的“是初始视图控制器”框。
  • 通过向其添加模态转场,从另一个场景中显示它。
  • 以编程方式显示它,通过调用 performSegueWithIdentifier:sender: 方法来启动模态转场。

我尝试了很多方法,但最后两个语句中描述的方法从未奏效。 modal segue 和 performSegue... 都失败并出现众所周知的错误:

“***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'应用程序试图以模态方式呈现拆分视图控制器......”

谁能解释一下?这是 XCODE/iOS 5.0 中的错误还是文档中的错误?

问候, 彼得

【问题讨论】:

  • 向 Apple 提交了一个错误,并为提到的文档页面发送了反馈。收到他们的解决方案后会回复。
  • 您找到解决方案了吗?我遇到了同样的问题,我找不到从 View Controller 转换到 SplitView Controller 的方法。提前致谢。
  • @dcastro 一种方法是使用大小为“全屏”的模式视图。只是一个解决方案,而不是解决方案
  • 我在 iOS 7 下得到一个 [UISplitViewController setMainNavigationItem:]: unrecognized selector sent to instance 异常,谷歌没有显示任何结果。所以如果你有同样的异常,那是因为你的SplitView必须是rootViewController。希望我可以帮助其他人搜索该错误。

标签: uiviewcontroller uisplitviewcontroller storyboard segue


【解决方案1】:

根据这个 Apple article,拆分视图控制器必须是根。这是一个sn-p:

拆分视图控制器必须始终是您创建的任何界面的根。换句话说,您必须始终将 UISplitViewController 对象中的视图安装为应用程序窗口的根视图。然后,您的拆分视图界面的窗格可能包含导航控制器、标签栏控制器或您需要实现界面的任何其他类型的视图控制器。拆分视图控制器不能以模态方式呈现。

【讨论】:

  • 谢谢!但是您的链接指向我在帖子中提到的同一篇文章,只是上面的一段。这使得它(文档中的文章)本身就不一致。所以让我们等待水果公司的反馈。
【解决方案2】:

似乎documentation 在发布此问题后不久就更新了。根据新文档,没有办法继续使用情节提要。无赖!

【讨论】:

    【解决方案3】:

    是的,可以从 UIView 传递到 UISplitView。 您必须使用自定义转场。

    阅读此链接(从日语翻译)

    UIViewController to UISplitViewController

    【讨论】:

      【解决方案4】:

      就我而言,我使用MGSplitViewController 来实现带有模态或推送segues 的SplitView。 试试看,效果不错!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 2013-07-06
        • 1970-01-01
        • 2013-02-04
        • 2012-09-30
        • 1970-01-01
        • 2015-08-21
        相关资源
        最近更新 更多