iphone – UISplitViewController和复杂视图层次结构

iphone – UISplitViewController和复杂视图层次结构,第1张

概述我正在做一个iPad技术演示,我遇到了一个严重的技术问题. 我有一个应用程序的概念,利用UISplitViewController,但不是整个应用程序的主要控制器. 应用程序流程可以大致描述为: 主屏幕(UIViewController) 列表 – >细节“目录”(UISplitViewController) 超细节屏幕(UIViewController,但可以想象也是SplitView的孩子). 我正在做一个iPad技术演示,我遇到了一个严重的技术问题.

我有一个应用程序的概念,利用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和复杂视图层次结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1083289.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存