ios7 没有 displayModeButtonItem 或 targetDisplayModeForActionInSplitViewController

标签 ios uisplitviewcontroller

我在 xcode 6 中启动了一个 Split View 项目,它运行良好。开箱即用,我得到了一个 Split View,它在纵向模式下有一个导航按钮(左上角),这样主视图就可以弹出/弹出。

主要问题是它在 iOS7 中不起作用,因为 displayModeButtonItem 和 targetDisplayModeForActionInSplitViewController 仅适用于 iOS8。

我看到一些应用程序可以实现相同的效果并在 iOS7 中运行,但我不知道如何做到这一点。有没有人有一个很好的例子或解决方法来在 iOS7 中实现这一点。

开箱即用的 xcode 构建了一个只能在 iOS8 中运行的项目,但我想我对 apple 并没有完全感到惊讶。

最佳答案

您仍然可以在 UISplitViewControllerDelegate 中使用已弃用的回调函数来添加和删除 UIBarButtonItem 到 iOS 7 平台的详细 View 。在您的 UISplitViewControllerDelegate 中实现如下:

func splitViewController(svc: UISplitViewController, willHideViewController aViewController: UIViewController, withBarButtonItem barButtonItem: UIBarButtonItem, forPopoverController pc: UIPopoverController) {
    if (!self.respondsToSelector(Selector("displayModeButtonItem"))) {
        let navigationController = self.viewControllers.last as UINavigationController
        let detailViewController: UIViewController? = navigationController.viewControllers?.last as? UIViewController
        barButtonItem.image = UIImage(named: "IC_BackChevron")
        detailViewController?.navigationItem.leftBarButtonItem = barButtonItem
    } else {
        // This callback function is depreciated in IOS8. We use displayModeButtonItem.
    }
}

func splitViewController(svc: UISplitViewController!, willShowViewController aViewController: UIViewController!, invalidatingBarButtonItem barButtonItem: UIBarButtonItem!) {
    if (!self.respondsToSelector(Selector("displayModeButtonItem"))) {
        let navigationController = self.viewControllers.last as UINavigationController
        let detailViewController: UIViewController? = navigationController.viewControllers?.last as? UIViewController
        detailViewController?.navigationItem.leftBarButtonItem = nil
    } else {
        // This callback function is depreciated in IOS8. We use displayModeButtonItem.
    }
}

关于ios7 没有 displayModeButtonItem 或 targetDisplayModeForActionInSplitViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26110594/

相关文章:

ios - 在 SwiftUI 中使列表行可选择

iphone - 在iOS中使用UIButtonTypeCustom选项进行初始化

ios - 带有 mfmailcomposeviewcontroller 的空电子邮件...外语问题?

ios - 如何使用 UISplitViewController iOS 在 iPad 上强制以纵向模式显示 MasterViewController

iOS5 SplitViewController 使 BarButton 在应用程序启动时处于横向 View 时可见

ios - 静音推送未交付到iOS 11上的应用程序

iphone - 在 UIWebView 中渲染 html 并从缓存中加载图像

objective-c - 如何抑制 Master-Detail Controller 滑动手势,并在 iOS 7 上重新创建其行为

objective-c - 单例中的 UISplitViewController 委托(delegate)

ios - UISplitViewController - 使用 Storyboard segues 替换详细 View Controller 是个好主意吗?