我正在从硬编码布局转换到Xcode 6中提供的新通用故事板系统。能够创建一个故事板,通过自动布局的魔力,可以同时处理iPhone和iPad。而我的理解是,通用故事板向后兼容iOS 7。如何在iOS 7上使用通用故事板的popover segues?
但是,我遇到了一个问题,使用popover segues。在iOS 8上,新的'呈现弹出式'segue将在iPad界面上显示为弹出窗口,并在iPhone界面上显示为模态视图控制器。这正是我想要的行为,但是当我在iOS 7上运行我的通用故事板时,每次尝试popover时都会崩溃。下面是错误消息我得到:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'-[UIPopoverController initWithContentViewController:] called when not
running under UIUserInterfaceIdiomPad.'
这是一个有点讨厌,因为我不希望有诉诸每个UI成语故事板分开。
它看起来像这些都是我的选择:
- 创建的
UIStoryboardSegue
一个子类,将显示在iPad上酥料饼和iPhone上一个模式的看法。这需要手动更改我的应用程序中所有popover的类。 - 从每个酒吧按钮项目,表格单元格等创建两个segues - 一个纯粹的'Popover'赛格和一个纯粹的'莫代尔'赛格。在这种情况下,我将无法控制 - 拖动到下一个屏幕,并且必须创建自定义操作方法,以便根据当前UI惯用法调用正确的Segue。
- 放弃通用故事板并创建设备特定的故事板,直到我可以从我的用户请求iOS 8。
这些都不是伟大的选择,所以我在想:我有任何其他选项?我是否错过了我提出的解决方案的任何问题?
我有完全相同的问题。目前我正在采用自定义的赛格路线,因为我觉得这是最没有意义的,但我对此并不满意。 – 2014-11-10 18:16:33