在我的应用程序中,某些视图控制器在iPad上(或者更具体地说,是一个常规的水平尺寸类)将它们作为弹出窗口显示是有意义的,但是在iPhone(或紧凑的水平尺寸类)上推送它是有意义的他们到导航堆栈上.有一种优雅的方式来支持这个吗?默认情况下,如果我使用“Present as Popover”segue,它将在iPhone上以模态方式显示,这不是我想要的.
我找到了一种方法来获得我想要的行为,但它很难看,而且容易出错.我根据我目前所处的大小类选择两个不同的segue.为了支持iOS 9多任务处理,我实现[UIViewController willTransitionToTraitCollection:withTransitionCoordinator]并在弹出框和导航控制器之间手动移动视图控制器(这部分似乎特别容易出错).
似乎应该有一些简单的方法来实现自定义segue来处理这个,或者某种自定义自适应表示控制器,但我还是无法绕过它.有人做过这样的成功吗?
解决方法
据我说这是最简单的方法,
步骤1:从一个控制器到另一个控制器创建两个segue.
第2步:设置一个segue的segue属性来推送和弹出另一个
第3步:现在根据您的要求调用执行segue,即iPad或iPhone
这是a sample code
示例代码注意:将bool条件更改为false以检查didSelectRowAtIndexPath中的另一个条件.