繁体   English   中英

在导航视图控制器登录屏幕上运行performSegueWithIdentifier会在两个屏幕之间切换

[英]Running performSegueWithIdentifier on navigation view controller login screen transitions through two screens

我已经在Xcode 7 beta 4中创建了一个故事板,并且正在使用Parse.com来存储我的数据。 我的故事板包含一个带有“登录”和“注册”按钮的初始屏幕,该按钮将用户(使用模式选择)导航到其各自的屏幕(“登录”和“注册”屏幕是嵌入在两个单独的导航控制器中的两个单独的屏幕)。 在登录屏幕上,我创建了一个推送到新视图控制器(这是登录后屏幕)的按钮。 进入“注册”和“登录”屏幕没有任何问题。

问题是用户通过“登录”屏幕成功登录时。 当我输入有效的用户凭据并单击“登录”时,它将选择到下一个屏幕(在导航栏上显示<登录”),然后立即再次选择一个不存在的屏幕(在菜单上显示<“返回”导航栏)。 有人知道为什么会这样吗? 我只是想让segue将用户带到下一个屏幕...我不确定为什么它会在两个屏幕之间切换。

这是我的LoginViewController.swift中“登录”按钮操作的代码:

 @IBAction func loginButton(sender: AnyObject) {

    if emailAddressLogin.text == "" || emailAddressPassword.text == "" {

        displayAlert("Login Error", message: "Please enter a valid username and password")

    } else {

        activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
        activityIndicator.center = self.view.center
        activityIndicator.hidesWhenStopped = true
        activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
        view.addSubview(activityIndicator)
        activityIndicator.startAnimating()
        UIApplication.sharedApplication().beginIgnoringInteractionEvents()

        var errorMessage = "Please try again"

        PFUser.logInWithUsernameInBackground(emailAddressLogin.text!, password: emailAddressPassword.text!, block: { (user, error) -> Void in

            self.activityIndicator.stopAnimating()
            UIApplication.sharedApplication().endIgnoringInteractionEvents()

            if user != nil {

                self.performSegueWithIdentifier("login", sender: self)

            } else {

                if let errorString = error!.userInfo["error"] as? String {

                    errorMessage = errorString

                }

                self.displayAlert("Failed Sign Up", message: errorMessage)
            }

        })
    }
}

编辑:而且,这在控制台中显示:pushViewController:animated:在现有过渡或演示发生时调用; 导航堆栈将不会更新。

您的问题似乎是您从按钮到新的视图控制器设置了segue,并从代码中调用了segue。 若要解决此问题,请删除情节提要中的segue。 然后重新创建segue,但是这次从视图控制器转移到另一个视图控制器-给新的segue与以前相同的标识符,这应该可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM