2

我有一个标签栏控制器,在那个标签栏里面我有五个视图控制器。我也有一个在 homeVC 上的右视图控制器(抽屉)。对于 rightViewController 我使用 MMDrawerController 来源:https ://www.youtube.com/watch?time_continue=1468&v=TdKnImb4SWs 。在 appdelegate 中。现在当右视图控制器关闭时,视图控制器的哪个生命周期被调用?因为我想写一个函数。我在 appdelegate 上使用过这段代码

    let rightViewController = mainStoryboard.instantiateViewController(withIdentifier: "RightViewVC") as! RightViewVC



       UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]

    let rightSideMenuNav = UINavigationController(rootViewController: rightViewController)
    drawerController = MMDrawerController(center:mainPage,rightDrawerViewController:rightSideMenuNav)

   // drawerController!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.panningCenterView
    drawerController!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.panningCenterView
    drawerController!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.all
    drawerController!.preferredInterfaceOrientationForPresentation = MMDrawerOpenCenterInteractionMode.full

    window?.rootViewController = drawerController
4

3 回答 3

1

viewwillApear()rightViewController 关闭时,homeViewController 中的将被调用。

于 2018-07-28T05:53:10.510 回答
1

MMDrawer 在打开、关闭或切换抽屉时提供完成块,您只需比较抽屉关闭或打开等事件即可成功。这是代码

@IBAction func rightMenuButtonTapped(_ sender: Any) { 

    let appdelegate = UIApplication.shared.delegate as! AppDelegate 

    appdelegate.drawerController?.toggle(MMDrawerSide.right, animated: true){ (isCompleted) in 
            if appdelegate.drawerController?.openSide == MMDrawerSide.none 
            { 
                 print("drawer close")
                 if let objHome = appdelegate.drawerController?.centerViewController as? HomeVC{ 
                      print("Got Home VC") 
                 }  
            } 
            else if appdelegate.drawerController?.openSide == MMDrawerSide.right 
            { 
                 print("drawer open") 
            } 
     }
}
于 2018-07-28T06:48:18.907 回答
0

尝试在每个 viewDidLoad 中打印以查看活动控制器:

if let window = UIApplication.shared.delegate?.window {
    if var viewController = window?.rootViewController {
        // handle navigation controllers
        if(viewController is UINavigationController){
            viewController = (viewController as! UINavigationController).visibleViewController!
        }
        print(viewController)
    }
}

或者

if self.window.rootViewController is MyViewController {
    //do something if it's an instance of that class
}
于 2018-07-28T06:07:22.557 回答