实现UIContainerView以支持多个登录/注册/登录屏幕

时间:2015-12-21 22:29:38

标签: ios iphone swift ios9

现在我正在使用SWRevealViewController为我的应用程序创建一个侧边菜单。我有这个工作好。我要做的下一件事是为登录,注册,登录和忘记密码实现4个不同的ViewControllers,然后根据用户是否已经以编程方式在这些控制器之间切换登录设备。

因此,最初在SWRevealViewController菜单上,我有一个表视图项“User”,它链接到“Logged In”视图控制器。在最初加载此控制器时,我检查用户是否已经登录,如果是,我只是继续使用此View Controller,如果没有,我以编程方式实例化我的“Login”视图控制器以提示用户登录。这就是问题所在。因为当我以编程方式实例化我的“登录”视图控制器时,我失去了连接SWRevealController的能力,因此侧面菜单完全消失了。

LoggedInViewController:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    backgroundView.layer.cornerRadius = backgroundView.frame.size.height / 10

    if self.revealViewController() != nil {
        //menuButton.target = self.revealViewController()
        //menuButton.action = "revealToggle:"
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    if (PFUser.currentUser() == nil) {
        dispatch_async(dispatch_get_main_queue(), { () -> Void in

            let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Login")
            self.presentViewController(viewController, animated: true, completion: nil)     /* Once this is complete, my Login controller no longer knows about SWRevealViewController */

            //self.addChildViewController(viewController)           /* Doing this does not allow for animation */
            //self.view.addSubview(viewController.view)
            //self.didMoveToParentViewController(viewController)

        })
    } else {
        usernameLabel.text! = PFUser.currentUser()!.username!
    }
}

通过调用self.presentViewController,我失去了与SWRevealViewController的连接。

LoginViewController:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    backgroundView.layer.cornerRadius = backgroundView.frame.size.height / 10.0
    usernameTextField.textAlignment = NSTextAlignment.Center
    usernameTextField.delegate = self
    passwordTextField.textAlignment = NSTextAlignment.Center
    passwordTextField.delegate = self

    if self.revealViewController() != nil {   // This now returns nil
        //menuButton.target = self.revealViewController()
        //menuButton.action = "revealToggle:"
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }
}

我的第一个想法是将所有4个ViewControllers放入ContainerView,然后从中管理它们。但这是最好的方法吗?有没有其他方法可以编程实例化这些控制器,同时能够在它们之间设置动画并保留SWRevealViewController的引用?

0 个答案:

没有答案