选项卡视图控制器中嵌入的受保护视图?

时间:2015-10-03 09:20:04

标签: ios xcode swift parse-platform segue

我正在处理应隐藏在登录视图后面的应用。

所以一般来说,我有一个标签导航控制器,应该可以容纳整个应用程序,我的逻辑是应用程序加载时,初始View控制器是标签导航控制器,它显示了用户登录时的第一个View如果它没有登录,则应该看到登录/注册页面。登录和注册页面都与Parse一起使用,它们都可以正常运行。它们在Tab视图控制器中的第一个View顶部以模态方式(使用segues)显示。

问题在于,当我登录时(并且我确认它有效!)登录视图控制器不会被解除以便查看选项卡视图控制器,我认为我可能在segue中搞砸了一些东西。如果用户未登录,则提供登录视图的segue是从受保护的视图(不是它的导航控制器,虽然我也测试过,但不起作用)来登录视图控制器。

此外,受保护页面中的代码如下所示:

override func viewDidAppear(animated: Bool) {
    self.performSegueWithIdentifier("segueToLoginView", sender: self)
}

这是我的故事板的样子:

enter image description here

因此,登录segue以模态方式呈现,这是我的登录按钮代码。

@IBAction func loginButtonTapped(sender: AnyObject) {

    let username = usernameTextField.text
    let password = passwordTextField.text


    // Sends to Parse to see if user exists
    PFUser.logInWithUsernameInBackground(username!, password: password!) {
        (user: PFUser?, error: NSError?) -> Void in

        if user != nil {

            // LOGIN Successful
            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
            NSUserDefaults.standardUserDefaults().synchronize()
            self.dismissViewControllerAnimated(true, completion: nil)
            print("User logged in")

        } else {

            // Display Failed Login Alert message with confirmation
            let failedLoginAttepmt = UIAlertController(
                title: "Ups!",
                message: "Something went wrong, try again...",
                preferredStyle: UIAlertControllerStyle.Alert
            )
            let confirmAction = UIAlertAction(
                title: "OK!",
                style: UIAlertActionStyle.Default)
                { action in
                    self.dismissViewControllerAnimated(true, completion: nil)
                }

            failedLoginAttepmt.addAction(confirmAction)
            self.presentViewController(failedLoginAttepmt, animated: true, completion: nil)

            print("Could not find the user")
        }

并且这行代码self.dismissViewControllerAnimated(true, completion: nil)应该关闭模态显示的登录视图控制器,因为我在控制台中看到了print语句。

我的错误在哪儿?

1 个答案:

答案 0 :(得分:0)

呃,我明白了。

我忘了添加用于检查用户是否实际登录的逻辑!如果您没有逻辑,View控制器将一次又一次地向您显示登录视图控制器。