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

Posted

技术标签:

【中文标题】嵌入在选项卡视图控制器中的受保护视图?【英文标题】:Protected View embedded in Tab View Controller? 【发布时间】:2015-10-03 09:20:04 【问题描述】:

我正在开发一个应该隐藏在登录视图后面的应用程序。

所以一般来说,我有一个标签导航控制器,它应该容纳几乎整个应用程序,我的逻辑是当应用程序加载时,初始视图控制器是标签导航控制器,如果用户登录,它会显示其第一个视图在。如果它没有登录,他们应该看到登录/注册页面。登录和注册页面都可以使用 Parse,它们都可以并且运行良好。它们以模态方式(使用 segues)呈现在选项卡视图控制器中的第一个视图之上。

问题是当我登录时(并且我确认它可以工作!)登录视图控制器没有被关闭以查看选项卡视图控制器,我认为我可能在 segues 中搞砸了。如果用户未登录,则显示登录视图的 segue 是从受保护的视图(不是导航控制器,虽然我也测试过,但不起作用)到登录视图控制器。

另外,受保护页面中的代码是这样的:

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

这是我的故事板的样子:

所以,登录 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) 应该关闭模态显示的登录视图控制器,因为我确实在控制台中看到了打印语句。

我的错在哪里?

【问题讨论】:

【参考方案1】:

呃,我想通了。

我忘记添加用于检查用户是否实际登录的逻辑!如果你没有逻辑,视图控制器只会一遍又一遍地向你显示登录视图控制器。

【讨论】:

以上是关于嵌入在选项卡视图控制器中的受保护视图?的主要内容,如果未能解决你的问题,请参考以下文章

仅使用一个视图控制器的具有多个选项卡的选项卡栏

如何在弹出到根视图 Swift 后立即更改选项卡?

从容器视图中的选项卡栏控制器中的视图控制器委派信息

关闭 xib 并转到选项卡栏控制器应用程序中的视图控制器

寻找嵌入了选项卡和导航控制器的视图控制器

在标签栏控制器中嵌入导航控制器会更改视图控制器的安全区域