我的应用概念利用了UISplitViewController,但不是作为整个应用程序的主要控制器。
应用程序的流程大致如下:
主屏幕(UIViewController) 列表->详细信息“目录”(UISplitViewController) 超级详细屏幕(UIViewController但也可以是SplitView的子级)。
问题出现在主屏幕和目录之间的流程中。一旦将UISplitViewController视图添加到UIWindow中,它就开始发生错误。
问题可以总结如下:
当UISplitView生成弹出视图时,它似乎会附着在其父视图上。从UIWindow子视图中删除UISplitView后,您将得到一个CoreGraphics异常,并且该视图将无法被删除。
当添加其他视图(在这种情况下可能是您返回的主屏幕)时,它们不会自动旋转,相反,由于CG异常而未能移除的UISplitView仍然继续响应旋转,导致无法处理的渲染错误。此时,添加任何视图,甚至重新添加SplitView,都会引起一系列渲染错误。
然后我尝试简单地将SplitView保留为“底部”视图,并不断向其上方添加和删除主屏幕,但这样做会失败,因为SplitView主导了方向更改调用,而主屏幕不会旋转,即使您调用[homeScreen becomeFirstResponder]。
您不能像UINavigationController那样将SplitView放入层次结构中,否则将直接运行时错误,因此该选项不可用。模态只是看起来很糟糕,并且也不鼓励使用。
我现在的推测是,处理此问题的唯一正确方法是“解除武装”UISplitViewController,以便可以从其父视图中删除它而不会引发未处理的异常,但我不知道如何做到这一点。
如果您想看到一个完全符合我的需求的应用程序,请查看iPad应用商店中的GILT Groupe。他们实现了这一点,但似乎编写了一个完整的自定义视图转换集。
非常感谢您的帮助。