我正在创作一个iPad应用程序.应用程序中的一个屏幕非常适合使用UISplitViewController.但是,应用程序的顶级是一个主菜单,我不想使用UISplitViewController.这提出了一个问题,因为Apple说:
UISplitViewController 应该是应用程序中的顶级视图控制器,即它的视图应该作为子视图添加 UIWindow
如果使用,UISplitViewController应该在应用程序的生命周期中存在 - 即不要从UIWindow中移除其视图并将其他视图放在适当位置,反之亦然
阅读和实验后,似乎只有满足Apple要求的可行选择,而我们自己的选择是使用模态对话框.所以我们的应用程序在根级别有一个UISplitViewController(即它的视图被添加为UIWindow的子视图),为了显示我们的主菜单,我们将它作为全屏模式对话框推送到UISplitViewController上.然后通过关闭主菜单视图控制器模式对话框,我们可以实际显示我们的拆分视图.
这个策略似乎运作正常.但它引出了一些问题:
1)有没有更好的方法来构建这个,没有模态,也满足提到的所有要求?由于被推送为模态对话框,主UI出现似乎有点奇怪.(模态应该用于重点用户任务.)
2)由于我的做法,我是否有遭受应用商店拒绝的风险?根据Apple的人机界面指南,这种模态策略可能是"误用"模态对话框.但是他们给了我什么其他选择呢?无论如何,他们会知道我这样做吗?
iphone user-interface appstore-approval ipad uisplitviewcontroller
我正在做一个iPad技术演示,我遇到了一个严重的技术问题.
我有一个利用UISplitViewController的应用程序概念,但不是整个应用程序的主要控制器.
应用程序流程大致可以这样描述:
主屏幕(UIViewController)列表 - >详细信息"目录"(UISplitViewController)超级细节屏幕(UIViewController但可以想象也可以是SplitView的孩子).
问题出在Home和Catalog之间.一旦将UISplitViewController视图添加到UIWindow,它就会开始出现混乱.
问题可归纳为:
当UISplitView生成弹出视图时,它似乎会被锁定到其父视图.从UIWindow子视图中删除UISplitView后,您将获得CoreGraphics异常,并且视图将无法删除.
当添加其他视图(可能在这种情况下,你要返回的主屏幕)时,它们不会自动旋转,而是由于CG异常而无法移除的UISplitView继续响应旋转,造成可怕的渲染错误,不能只是"处理".此时,添加任何视图,甚至重新添加SplitView,都会导致一连串的渲染错误.
然后我尝试简单地将SplitView作为"底部"视图保留,并保持在其顶部添加和删除主屏幕,但这失败,因为SplitView支配Orientation更改调用,并且主屏幕不会旋转,甚至如果你打电话给[homeScreen becomeFirstResponder]
您不能将SplitView放入像UINavigationController这样的层次结构中,您将获得彻底的运行时错误,因此该选项不在表中.模态看起来很糟糕,无论如何都是劝阻.
我现在的假设是处理这个问题的唯一正确方法是以某种方式"解除"UISplitViewController,以便它可以从其父视图中删除而不抛出未处理的异常,但我不知道如何.
如果您想查看完全符合我需要的应用,请查看iPad应用商店中的GILT Groupe.他们将其关闭,但他们似乎编写了一个完整的自定义视图转换集.
非常感谢帮助.