ios7没有displayModeButtonItem或targetDisplayModeForActionInSplitViewController

我在xcode 6中开始了一个Split View项目,它的工作很好。 开箱即可看到在纵向模式下具有导航button(左上angular)的分割视图,这样主视图就可以popup/popup。

主要问题是,它不适用于iOS7,因为displayModeButtonItem和targetDisplayModeForActionInSplitViewController只是iOS8。

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

这个开箱即用的xcode构build了一个只能在iOS8上运行的项目,但是我猜这个项目并不完全让我吃惊。

您仍然可以在UISplitViewControllerDelegate使用不推荐使用的callback函数来将UISplitViewControllerDelegate添加到您的iOS 7平台的详细视图中。 在你的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. } }