Search code examples
iosswiftuisplitviewcontroller

Removing the displayModeButton in UISplitViewController in iOS


I want to remove the displayModeButton from the detailViewController's Navigation Bar in splitveiwconroller. I tried setting leftBarButtionItem.isEnable = false in AppDelegate.swift file(as below)

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

it hides the displaymodebutton intially when the application start. But when i swipt right to open the master view and then swipe left to dismiss the masterview controller the dispaly mode buttom reappars again. Please help me to hide the displayModeButton from detail view conroller.


Solution

  • Do the same in 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()
         }
    

    OR if above does not work, use below code in AppDelegate

    navigationController.topViewController!.navigationItem.setLeftBarButton(nil, animated: true)