[英]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.