簡體   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