
我有一个应用程序的概念,利用UISplitVIEwController,但不是整个应用程序的主要控制器.
应用程序流程可以大致描述为:
主屏幕(UIVIEwController)
列表 – >细节“目录”(UISplitVIEwController)
超细节屏幕(UIVIEwController,但可以想象也是SplitVIEw的孩子).
问题在于Home和Catalog之间的流程.一旦UISplitVIEwController视图被添加到UIWindow,它开始抛出嘶嘶作风.
问题可以归纳如下:
当UISplitVIEw生成一个popover视图时,它似乎被锁定到其父视图.从UIWindow子视图中删除UISplitVIEw时,您将获得一个CoreGraphics异常,并且该视图将无法被删除.
当添加其他视图(大概在这种情况下,您返回的主屏幕),它们不会自动转换,而是由于CG异常而无法删除的UISplitVIEw继续响应旋转,导致可怕的渲染错误,不能只是“处理”.此时,添加任何视图,甚至重新添加SplitVIEw会导致一系列渲染错误.
然后我尝试简单地将SplitVIEw作为“底部”视图存在,并保持添加和删除主屏幕,但是由于SplitVIEw支配定向更改调用,因此主屏幕不会旋转,甚至如果你打电话[homeScreen becomeFirstResponder]
您不能将SplitVIEw放置到像UINavigationController这样的层次结构中,您将得到一个彻底的运行时错误,因此该选项不在表中.模式看起来很糟糕,反正都是不鼓励的.
在这个时候我的推测是处理这个问题的唯一正确方法是以某种方式“解除”UISplitVIEwController,以便可以从其父视图中删除而不会抛出未处理的异常,但我不知道如何.
如果您想要看到一个完全符合我需要做的应用程序,请查看iPad应用商店中的GILT Groupe.他们把它们拉下来,但是似乎已经编写了一个完整的自定义视图转换集.
帮助将不胜感激.
解决方法 苹果 states:The split vIEw controller’s vIEw
should always be installed as the root
vIEw of your application window. You
should never present a split vIEw
insIDe of a navigation or tab bar
interface.
这的确意味着它应该是root视图,而不是另一个视图的子视图.即使他们补充说:
You should never present a split vIEw insIDe of a navigation or tab bar interface
这并不意味着您可以将其添加为任何其他控制器的子视图. (抱歉)
我有一种感觉,你正在经历的是尝试这样做的副产品.我实际上感到惊讶的是,GILT Groupe的应用没有被拒绝.苹果公司倾向于严格执行这些HIG指南.当您尝试将它们添加到NavigationController时,它们(正如您已经发现)导致了相当糟糕的运行时错误.
总结以上是内存溢出为你收集整理的iphone – UISplitViewController和复杂视图层次结构全部内容,希望文章能够帮你解决iphone – UISplitViewController和复杂视图层次结构所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)