ios - 在 iPhone 上使用 splitviewcontroller 先描绘细节 View

标签 ios iphone objective-c uisplitviewcontroller

我目前正在为 iOS 8 开发并使用新的自适应框架开发应用程序。奇怪的是,当我在 iPhone 上使用带有此 Storyboard配置的 splitviewcontroller 时,应用程序不是从主视图 Controller 开始,而是从细节 Controller 开始。这是一个错误吗?我该如何修复它? enter image description here

只有包含主 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/

相关文章:

ios - 我的 JSON Post 做错了什么?

ios - 向 AppDelegate 发送消息不适用于应用内购买

ios - 根据方向更新自动布局约束

iphone - 将 TableView 中的 TextFields 添加到数组

ios - 找不到 webLink 时,UIWebView 不会转到 didFailLoadWithError?

objective-c - iOS 中的基本拖放

ios - 无法将 NSDictionary 参数写入自定义对象

iphone - iOS RGB 颜色不正确?

ios - Facebook graph api v2.4 不返回生日

ios - friend 电子邮件表单google Plus