2016-06-04 5 views
0

Ich bin neu bei swift, und ich versuche, einen Lobby-Bildschirm mit einem Textfeld und einer Schaltfläche zu erstellen, um zum nächsten Bildschirm zu gelangen. Ich habe es verbunden, um den nächsten View-Controller zu "zeigen". Ich brauche es, um mein Eingabefeld zu überprüfen und nur fortzusetzen, wenn das Feld nicht leer ist, und natürlich, um den Namen an den nächsten View-Controller zu übergeben, kann ich auch nicht meine Tastatur ein- und ausblenden (bleibt bei der zweiten Sekunde an) Controller anzeigen). Weiß jemand, wie man eine Taste anlegt, um das Feld zu überprüfen und erst dann zum nächsten View-Controller zu wechseln? hier ist mein Code (meist automatisch generiert):Fehler bei der Übergabe von Daten an tableController

import UIKit 

    class LobbyController: UIViewController { 

     @IBOutlet weak var playerNameField: UITextField! 


     override func viewDidLoad() { 
      super.viewDidLoad() 

      playerNameField.becomeFirstResponder() 
     } 

     override func didReceiveMemoryWarning() { 
      super.didReceiveMemoryWarning() 
      // Dispose of any resources that can be recreated. 
     } 

     @IBAction func nameLabel(sender: UITextField) { 
      playerNameField.becomeFirstResponder() 
     } 

     @IBAction func startGameButton(sender: AnyObject) { 
      self.playerNameField.resignFirstResponder() 

      } 
    } 

Dank!

Antwort

1

Wenn Sie vor der Übertragung eine Eingabevalidierung durchführen möchten, sollten Sie das Segment nicht direkt mit der Schaltfläche verbinden, sondern vom Code ableiten.

Zuerst sollten Sie klicken Sie auf Ihre Schaltfläche und entfernen Sie die segue Aktion erstellt.

Jetzt sollten Sie den Übergang vom View-Controller aus erstellen, indem Sie das Steuerelement vom gelben Ansicht-Controller-Symbol in der Dokumentkontur ziehen.

enter image description here

Dann klicken Sie auf das Segue im Storyboard und seine Attribute Inspektor öffnen und eine segue Kennung hinzuzufügen.

enter image description here

Jetzt können Sie diese Segue in Code auszuführen.

Also für die IBAction Ihrer Tastendruck kann man sagen, so etwas wie:

@IBAction func startGameButton(sender: AnyObject) { 
     if self.playerNameField.text?.characters.count != 0{ 
      self.playerNameField.resignFirstResponder() 
      self.performSegueWithIdentifier("MySegueId", sender: self.playerNameField.text!) 
     } 

}