2017-09-10 3 views
0

私は、バーガーメニューをタップしてポップアウトしたときにページの半分まで開くNav Viewを持っています。バックグラウンドには他のビュー(ルートビューコントローラとその子)がまだあります。ENSideMenuNavController - 他のすべてのビューとのインタラクションを無効にする

他のビューがグレー表示されている背景エリアをタップすると、それらのビューとやりとりすることができ、ページがナビゲートして、上にナビゲーションビューを残します。

ナビゲーションビューは複数の場所で使用されるため、他のビューとのやりとりを無効にしてNavView Controllerにするためのコードが必要です。以下のコード。上記NavViewControllerで、私は他のビュー(またはそれがから起動だ少なくともビュー)との相互作用を有効/無効にするにはどうすればよい

import UIKit 

class MenuNavViewController: ENSideMenuNavigationController, ENSideMenuDelegate { 

    var tabBar: ManagerTabViewController! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let sb = UIStoryboard(name: "iPhoneStoryboard", bundle: nil) 
     let menu = sb.instantiateViewController(withIdentifier: "MenuTableViewController") as! MenuTableViewController 
     menu.tabBar = self.tabBar 
     sideMenu = ENSideMenu(sourceView: self.view, menuViewController: menu, menuPosition: .left) 
     sideMenu?.bouncingEnabled = false 

     view.bringSubview(toFront: navigationBar) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    // MARK: - ENSideMenu Delegate 
    func sideMenuWillOpen() { 
    } 

    func sideMenuWillClose() { 
    } 

    func sideMenuDidClose() { 

    } 

    func sideMenuDidOpen() { 

    } 
} 

答えて

0

次のコードに示す回答が見つかりました。

さらに、ENSideMenuNavigationControllerクラスを見ると、 "init"メソッドは関連するView Controllerを "viewControllers"に設定し、以下のコードを実装して目的の効果を得たことがわかりました。

import UIKit 

class MenuNavViewController: ENSideMenuNavigationController, ENSideMenuDelegate { 

    var tabBar: ManagerTabViewController! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let sb = UIStoryboard(name: "iPhoneStoryboard", bundle: nil) 
     let menu = sb.instantiateViewController(withIdentifier: "MenuTableViewController") as! MenuTableViewController 
     menu.tabBar = self.tabBar 
     sideMenu = ENSideMenu(sourceView: self.view, menuViewController: menu, menuPosition: .left) 
     sideMenu?.bouncingEnabled = false 
     sideMenu?.delegate = self 


     view.bringSubview(toFront: navigationBar) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    // MARK: - ENSideMenu Delegate 
    func sideMenuWillOpen() { 

    } 

    func sideMenuWillClose() { 
    } 

    func sideMenuDidClose() { 
     // Enable interaction with other views again 
     for viewController in self.viewControllers { 
      viewController.view.isUserInteractionEnabled = true 
     } 
    } 

    func sideMenuDidOpen() { 
     // Disable interaction with other views 
     for viewController in self.viewControllers { 
      viewController.view.isUserInteractionEnabled = false 
     } 
    } 
} 

他にも、より良い練習/コードの提案があります。

+0

回答を受け入れる – Vinodh

+0

あなた自身の回答を2〜3日間受け入れることができないので、待つ必要があります。それまでにもより良い答えがあるかもしれません。その時間が過ぎた後は確かにそれを受け入れます。 – user1567453

関連する問題