我目前正在为 iOS 8 开发并使用新的自适应框架开发应用程序。奇怪的是,当我在 iPhone 上使用带有此 Storyboard配置的 splitviewcontroller 时,应用程序不是从主视图 Controller 开始,而是从细节 Controller 开始。这是一个错误吗?我该如何修复它?
只有包含主 Controller 的 navigationController 存在时才会发生这种情况,如果我删除它,应用程序将以主 Controller 启动。
最佳答案
需要注意的是,当一个 Split View Controller 应用程序在 iPhone 6 Plus 上以纵向模式启动时,它只是显示 Split View Controller 处于折叠状态。默认情况下,这会将详细 View 推送到主导航 Controller 中的任何 View Controller 之上。
阻止特定 View (例如您最初可能在 iPad 上显示的空白详细 View )在启动时显示,或者实际上在任何旋转到纵向后显示的方法是在 splitViewController:collapseSecondaryViewController:ontoPrimaryViewController 中处理:委托(delegate)方法。这将在演示之前在 iPhone 或 iPhone 6 Plus 上以纵向模式调用。
这样做,您不需要任何设备特定的代码。
最简单的形式如下:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController
{
if ([secondaryViewController isKindOfClass:[BlankViewController class]])
{
// If our secondary controller is blank, do the collapse ourself by doing nothing.
return YES;
}
// Otherwise, use the default behaviour.
return NO;
}
显然,如果您不希望最顶层的主视图 Controller 在 Split View展开后最终出现在详细信息侧,那么您需要在 splitViewController:separateSecondaryViewControllerFromPrimaryViewController: 中执行相反的操作,为新的辅助 View 创建并返回一个 BlankViewController .
请注意在这些方法中将您自己的实现与 Apple 的实现混合在一起,它们会做一些疯狂的事情,例如将 UINavigationController 嵌入到其他 UINavigationController 中。在这里查看我的相关答案:https://stackoverflow.com/a/26090823/4089333
关于ios - 在 iPhone 上使用 splitviewcontroller 先描绘细节 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708800/