SWIFT:推送转场会导致模态转场 [英] SWIFT: Push segue is resulting in a modal segue instead
问题描述
在我的故事板中,模态转场将用户带到登录屏幕(从主屏幕).然后,我添加了一个从注册屏幕到下一个屏幕(创建配置文件)的 PUSH segue,它嵌入在导航控制器中(创建配置文件屏幕是包含测试"按钮的屏幕).
In my storyboard, a modal segue takes the user to the Sign In screen (from the main screen). Then, I added a PUSH segue from the Sign Up screen to the next screen (Create Profile), which is embedded in a Navigation Controller (The Create Profile screen is the one with the "test" button included).
注册屏幕的转场工作正常.但是,当用户输入他们的凭据并单击注册"时,它确实会将他们带到正确的屏幕,但使用的是模态转场与推送转场.我不知道为什么会这样.
The segue to the Sign Up screen works fine. However, when a user enters their credentials and clicks "Sign Up", it does take them to the correct screen, but using a modal segue vs. a push segue. I have no idea why this is happening.
这是我的注册视图控制器代码.任何帮助将不胜感激!
Here is my Sign Up View Controller code. Any help would be greatly appreciated!
import UIKit
import Parse
class SignInViewController: UIViewController {
@IBOutlet weak var usernameField: UITextField!
@IBOutlet weak var passwordField: UITextField!
@IBAction func signInButton(sender: AnyObject) {
PFUser.logInWithUsernameInBackground(usernameField.text!, password:passwordField.text!) {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
//self.performSegueWithIdentifier("loginUser", sender: self)
self.usernameField.text = ""
self.passwordField.text = ""
} else {
if let errorString = error?.userInfo["error"] as? String {
self.displayAlert("Login Failed", message: errorString)
}
}
}
}
@IBAction func signUpButton(sender: AnyObject) {
if usernameField.text == "" || passwordField.text == "" {
self.displayAlert("Missing Field(s)", message: "Username and password are required")
} else {
let user = PFUser()
user.username = usernameField.text
user.password = passwordField.text
user.signUpInBackgroundWithBlock {
(succeded, error) -> Void in
if let error = error {
if let errorString = error.userInfo["error"] as? String {
self.displayAlert("Sign Up Failed", message: errorString)
}
} else {
self.performSegueWithIdentifier("SignUpToCreate", sender: self)
self.usernameField.text = ""
self.passwordField.text = ""
}
}
}
}
//Dismiss the sign in screen
@IBAction func closeButton(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
//Format the text fields
textFieldUI()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//Display alert function
func displayAlert(title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
//Textfield UI
func textFieldUI() {
passwordField.leftView = UIView(frame: CGRectMake(0, 0, 8, 0))
passwordField.leftViewMode = .Always
usernameField.leftView = UIView(frame: CGRectMake(0, 0, 8, 0))
usernameField.leftViewMode = .Always
}
}
推荐答案
这是不可能的:
Root --(modal)--> SignUp --(push)--> NavigationController<->Detail
结构应该是这样的
Root --(modal)--> NavigationController<->Signup --(push)--> Detail
我认为您的设计有误,因为您不想在注册控制器中显示导航栏.您可以通过在显示之前设置视图控制器 navigationBarHidden
来防止这种情况发生.
I think you got to the wrong design because you did not want to show the navigation bar in the sign up controller. You can prevent that by setting the view controllers navigationBarHidden
before showing it.
这篇关于SWIFT:推送转场会导致模态转场的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!