我正在做一个 iPad 技术演示,我遇到了一个严重的技术问题。
我有一个利用 UISplitViewController 的应用程序概念,但不是作为整个应用程序的主控制器。
应用流程大致可以这样描述:
主屏幕 (UIViewController) List->Detail "Catalog" (UISplitViewController) 超级详细屏幕(UIViewController 但也可能是 SplitView 的子项)。
问题在于 Home 和 Catalog 之间的流程。一旦 UISplitViewController 视图被添加到 UIWindow 中,它就会开始发出嘶嘶声。
问题可以总结为:
当 UISplitView 生成一个弹出视图时,它似乎被锁定到其父视图。从 UIWindow 子视图中删除 UISplitView 后,您将收到 CoreGraphics 异常,并且该视图将无法删除。
添加其他视图时(在这种情况下可能是您要返回的主屏幕),它们不会自动旋转,而是由于 CG 异常而无法删除的 UISplitView 继续响应旋转,导致无法仅“处理”的可怕渲染错误。此时,添加任何视图,甚至重新添加 SplitView,都会导致一连串的渲染错误。
然后,我尝试简单地将 SplitView 保留为“底部”视图,并继续从其顶部添加和删除主屏幕,但这失败了,因为 SplitView 支配了方向更改调用,并且主屏幕不会旋转,甚至如果您致电 [homeScreen becomeFirstResponder]
您不能将 SplitView 放入 UINavigationController 之类的层次结构中,您将得到一个彻底的运行时错误,因此该选项不可用。模态只是看起来很糟糕,无论如何都不鼓励。
我现在的假设是,处理这个问题的唯一正确方法是以某种方式“解除” UISplitViewController 以便可以将其从其父视图中删除而不会引发未处理的异常,但我不知道如何。
如果您想查看完全符合我需要的应用程序,请查看 iPad 应用程序商店中的 GILT Groupe。他们成功了,但他们似乎已经编写了一个完整的自定义视图转换集。
帮助将不胜感激。