ios - 在导航 View Controller 登录屏幕上运行 performSegueWithIdentifier 通过两个屏幕转换

标签 ios iphone swift parse-platform

我在 Xcode 7 beta 4 中创建了一个 Storyboard,我正在使用 Parse.com 来存储我的数据。我的 Storyboard包含一个带有“登录”和“注册”按钮的初始屏幕,这些按钮将用户(使用模式转场)导航到他们各自的屏幕(登录和注册屏幕是嵌入在两个独立导航 Controller 中的两个独立屏幕)。在登录屏幕上,我创建了一个推送 segue 到一个新的 View Controller (这是一个登录后屏幕)。进入注册和登录屏幕没有问题。

问题出在用户通过登录屏幕成功登录时。当我输入有效的用户凭据并单击“登录”时,它会转到下一个屏幕(导航栏上有 <“登录”),然后立即再次转到一个不存在的屏幕(导航栏上有 <“返回”)导航栏)。有谁知道为什么会这样?我只是想让 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:在现有的过渡或演示发生时调用;导航堆栈将不会更新。

最佳答案

您的问题似乎是您设置了从按钮到新 View Controller 的转场并从代码调用转场。要解决此问题,请删除 Storyboard 中的转场。然后重新创建 segues,但这次是从 View Controller 到另一个 View Controller - 为新的 segues 提供与以前相同的标识符,这应该可以解决问题。

关于ios - 在导航 View Controller 登录屏幕上运行 performSegueWithIdentifier 通过两个屏幕转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951483/

相关文章:

ios - 终止前一个函数后调用下一个函数

iphone - iOS 内存管理错误 - 消息发送到释放的实例

iphone - 自定义滚动条 iOS

Swift 函数式编程

swift - Reactive Cocoa/Reactive Swift - Swift 3.0 缺少方法

iphone - 在 View 中居中 CGRect

ios - 我如何在 View 之间转换,每个 View 都有自己的 View Controller ?

ios - 尝试以编程方式设置 UITextField 占位符文本时出现 fatal error

ios - 在使用 push segue 之前检查是否可以使用 unwind segue

ios - 使用单元测试时遇到问题