iOS 移除 UISplitViewController 中的 displayModeButton

Removing the displayModeButton in UISplitViewController in iOS

我想从 splitveiwconroller 的 detailViewController 的导航栏中删除 displayModeButton。我尝试在 AppDelegate.swift 文件中设置 leftBarButtionItem.isEnable = false(如下所示)

if let splitViewController = self.window!.rootViewController as? UISplitViewController {
            let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
            navigationController.topViewController!.navigationItem.leftBarButtonItem?.isEnabled = false
            }

它在应用程序启动时最初隐藏显示模式按钮。但是当我向右滑动以打开主视图然后向左滑动以关闭主视图控制器时,显示模式按钮再次重新出现。请帮助我从详细视图控制器中隐藏 displayModeButton。

在 master 中做同样的事情 viewController viewWillAppear:

   let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window!.rootViewController = controller 
if let splitViewController = appDelegate.window!.rootViewController as? UISplitViewController {

let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem?. isEnabled = false
navigationController.topViewController!.navigationItem.leftBarButtonItem?. tintColor = UIColor.clearColor()
     }

或者如果上述方法不起作用,请在 AppDelegate

中使用以下代码
navigationController.topViewController!.navigationItem.setLeftBarButton(nil, animated: true)  

替代 Daljeet 的回答,我们也可以在细节视图控制器上使用 navigationItem.setHidesBackButton 或在 AppDelegate.swift 的 didFinishLaunchingWithOptions 中使用它:

if let splitViewController = appDelegate.window!.rootViewController as? UISplitViewController {

let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.setHidesBackButton(true, animated: true)
}