在XCode 6中,如果您基于Master-Detail Application模板创建一个新项目,您将获得一个适用于所有设备的通用故事板.
在主视图中选择单元格时,将通过自适应"显示详细信息"segue更新详细视图.在iPhone 4,5,6或6+的纵向上,这个segue将按照预期的推动形式.在横向的iPad或iPhone 6+上,它将导致详细视图按预期更新.
现在,如果您将UITabBarController作为主视图控制器插入到原始主视图控制器的选项卡,则在主视图中选择单元格时发生的自适应segue在iPhone上的行为不正常.您现在可以获得模态转换,而不是进行推送转换.我该如何解决这个问题?奇怪的是,默认情况下不支持此功能.
我发现以下帖子很有用:UISplitviewController Master中的iOS8 TabbarController 但是当使用建议的方法时,当我在纵向推动后旋转到横向时,我在iPhone 6 Plus上没有得到正确的行为.详细视图的内容显示在主视图中,这并不奇怪,因为这是建议的解决方案所做的.
谢谢!
小智 6
重新观看来自WWDC14的视频我想我找到了一个更好的答案.
这是自定义UISplitViewController的代码:
import UIKit
class CustomSplitViewController: UISplitViewController {
override func showDetailViewController(vc: UIViewController!, sender: AnyObject!) {
if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClass.Compact) {
if let tabBarController = self.viewControllers[0] as? UITabBarController {
if let navigationController = tabBarController.selectedViewController as? UINavigationController {
navigationController.showViewController(vc, sender: sender)
return
}
}
}
super.showDetailViewController(vc, sender: sender)
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记在故事板中设置自定义类.
在iPhone 6,iPhone 6+和iPad Air的模拟器中测试并按预期工作.
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |