2015-11-14 4 views
1

В моей раскадровке модальный переход выводит пользователя на экран входа (с главного экрана). Затем я добавил PUSH segue с экрана регистрации на следующий экран (Create Profile), который встроен в контроллер навигации (экран «Создать профиль» - тот, в котором включена кнопка «тест»).SWIFT: Push segue приводит к появлению модального сегмента

enter image description here

enter image description here

переход к Регистрации экрана работает отлично. Однако, когда пользователь вводит свои учетные данные и клики «Зарегистрироваться», он выводит их на правильный экран, но использует модальный переход по сравнению с нажатием клавиши. Я понятия не имею, почему это происходит.

Вот мой код контроллера регистрации. Любая помощь будет принята с благодарностью!

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 

} 

} 
+0

где ур выполняетSegueWithIdentifier метод? –

+1

Ваш знак в VC должен иметь контроллер навигации, чтобы сделать push-сегу !! –

+0

self.performSegueWithIdentifier («SignUpToCreate», отправитель: self) находится в действии SignUpButton. – SB2015

ответ

3

Это не представляется возможным:

Root --(modal)--> SignUp --(push)--> NavigationController<->Detail 

Структура должна быть, как это

Root --(modal)--> NavigationController<->Signup --(push)--> Detail 

Я думаю, что вы получили неправильный дизайн, потому что вы не хотите, чтобы показать панель навигации в контроллере регистрации. Вы можете предотвратить это, установив контроллеры вида navigationBarHidden перед его показом.

+0

Спасибо! Это было именно то, что я искал – SB2015

Смежные вопросы