После входа в систему, как установить Sidemenu с контроллером MainView в Swift 4 - PullRequest
0 голосов
/ 18 мая 2018

Пожалуйста, кто-нибудь, посоветуйте / направьте меня.Как достичь этой задачи.Я вошел в систему из моего приложения и после того, как установить боковое меню.Я добавил код ниже.

Это код Appdeligate

fileprivate func createMenuView() {
    // create viewController code...
    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let mainViewController = storyboard.instantiateViewController(withIdentifier: "GSMngrMainViewController") as! GSMngrMainViewController
    let leftViewController = storyboard.instantiateViewController(withIdentifier: "LeftViewController") as! LeftViewController

    let nvc: UINavigationController = UINavigationController(rootViewController: mainViewController)

    UINavigationBar.appearance().tintColor = UIColor.black
    leftViewController.mainViewController = nvc

    let slideMenuController = GSExSlideMenuController(mainViewController:nvc, leftMenuViewController: leftViewController)
    slideMenuController.automaticallyAdjustsScrollViewInsets = true
    slideMenuController.delegate = mainViewController
    self.window?.backgroundColor = UIColor.white
    self.window?.rootViewController = slideMenuController
    //self.window?.rootViewController = loginViewController
    self.window?.makeKeyAndVisible()
}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    DropDown.startListeningToKeyboard()

     let userId = UserDefaults.standard.string(forKey: "userId")
    if userId == nil{
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let loginViewController = storyboard.instantiateViewController(withIdentifier: "GSLoginViewController")
        let navigationCont = UINavigationController.init(rootViewController: loginViewController)
        self.window?.rootViewController = navigationCont
    }else{
        self.createMenuView()
    }

    GMSServices.provideAPIKey(googleApiKey)
    return true
}

1 Ответ

0 голосов
/ 18 мая 2018

Добавьте этот код в ViewController, где вы хотите иметь SideMenu

     var customView = Side_Menu_ViewController()

         func openSideMenu() {

            let controller = storyboard!.instantiateViewControllerWithIdentifier("Side_Menu_ViewController") as! Side_Menu_ViewController
            addChildViewController(controller)
            controller.view.frame = view.frame
            controller.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.6)
            view.addSubview(controller.view)
            controller.didMoveToParentViewController(self)
         }


        func hideMenu() {

            UIView.transitionWithView(self.view, duration: 0.5, options: UIViewAnimationOptions.OverrideInheritedOptions, animations: {
            self.customView.view.frame = CGRectMake(self.customView.view.frame.origin.x + 300, 0,self.customView.view.frame.size.width+120,self.view.frame.height);

              }, completion: { (finished: Bool) -> () in
          })

        }

Используйте два UIViews, как показано на рисунке ниже -один с черным bg, а другой с вашими необходимыми вещами и добавьте следующий код в viewDidLoad SideMenuViewController

SideView.frame = CGRectMake(self.view.frame.width, 0,SideView.frame.size.width,self.view.frame.height)

UIView.transitionWithView(self.view, duration: 0.5, options: UIViewAnimationOptions.OverrideInheritedOptions, animations: {

    self.SideView.frame = CGRectMake(self.SideView.frame.origin.x - 210, 0,self.SideView.frame.size.width-130,self.view.frame.size.height);

         }, completion: { (finished: Bool) -> () in })
...