如何以编程方式在iOS 10中的分屏视图控制器中隐藏左视图控制器

如何以编程方式在iOS 10中的分屏视图控制器中隐藏左视图控制器

问题描述:

我正在iOS版Swift中开发应用程序。我的应用程序的UI使用收件箱UISplitViewController。当我的应用以纵向方向在iPad上运行时,我希望左侧视图控制器弹出窗口在选择某个项目后自动隐藏。如何以编程方式在iOS 10中的分屏视图控制器中隐藏左视图控制器

唯一的答案我已经能够找到使用方法不再存在或被弃用。

更具体地说,一旦表格中的项目被选中,我想隐藏下面屏幕截图左侧的视图。

Screenshot of app with menu visible.

首先,确保你有一个从应用程序的委托安装到你的UISplitViewController参考。例如。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    let splitViewController = window!.rootViewController as! UISplitViewController 
    splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.primaryOverlay 
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController 
    splitViewController.delegate = self 
} 

然后在你为你的表视图didSelectRowAtIndexPath方法,添加类似:

if UIApplication.shared.statusBarOrientation == .portrait { 
     splitViewController?.preferredDisplayMode = .primaryHidden 
    } 

要动态:

if UIApplication.shared.statusBarOrientation == .portrait { 
     UIView.animate(withDuration: 0.3, animations: { 
      self.splitViewController?.preferredDisplayMode = .primaryHidden 
     }, completion: nil) 
    } 
+0

我接受了这个作为解决方案,因为它做什么我问。但是,如果“主要”视图可以滑出视图而不是消失,那将会很好。 –

+0

好点 - 用动画代码更新了答案。 – Tom