Wie kann ich den View Controller mit UIButton wechseln? Hier ist mein Code:
@IBAction func scanAction(sender: AnyObject) {
//switch view controller
}
Wenn ich auf die Schaltfläche Scannen klicke, wird ein Anmeldeformular angezeigt.
Mein View Controller in Main.storyboard ist so
Bitte geben Sie mir einen Rat, wenn Sie können. Vielen Dank.
Ich habe schon die Antwort gefunden
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController
self.presentViewController(nextViewController, animated:true, completion:nil)
Eine Möglichkeit besteht darin, nur eine modale Auswahl von einer Schaltfläche vorzunehmen. Kein IBOutlet erforderlich.
Programmatisch:
@IBAction func scanButton (sender: UIButton!) {
performSegueWithIdentifier("nextView", sender: self)
}
Sie sollten ein modales Segment hinzufügen und den Bezeichner nennen. Sie verbinden den VC1 mit VC2.
Am einfachsten ist es, einen UINavigationViewController zu erstellen. Fügen Sie dann einen Button zum aktuellen Bildschirm hinzu. Drücken Sie nun die Strg-Taste und ziehen Sie den Button auf den Target View Controller. Das ist es.
Quelle: iOs UINavigationViewController .
Es gibt tatsächlich eine Antwort ohne hartcodierten Code ..__ In Ihrem Storyboard können Sie die Schaltfläche per Drag & Drop zum nächsten View-Controller ziehen und dort das Segment definieren. Dadurch wird sichergestellt, dass bei jedem Drücken der Taste das Segment ausgelöst wird. Sie können dies im "Connections Inspector" der Schaltfläche in den ausgelösten Segmenten sehen.
Wenn Sie Daten in den Ziel-View-Controller einfügen möchten, können Sie der Schaltfläche eine Untätigkeit hinzufügen und die Daten in die Vorbereitungsfunktion für die Übergabe setzen. Das Coole daran ist, dass Ihre ausgelösten Segmente immer noch von Ihrer Schaltfläche ausgelöst werden. Dieser Teil würde so aussehen:
@IBAction func buttonPressed(_ sender: UIButton) {
someImportantData = "some data if needed"
//no need to trigger segue :)
}
//not your case, but in order to understand the sage of this approach
@IBAction func button2Pressed(_ sender: UIButton) {
someImportantData = "some data2 if needed"
//no need to trigger segue :)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//retrieve the destination view controller for free
if let myDestincationViewController = (segue.destination as? MyDestincationViewController) {
myDestincationViewController.someImportantData = someImportantData
}
}
Auf diese Weise benötigen Sie keine hartcodierten Zeichenfolgen für Segmentkennungen, Storyboard-Kennungen usw. und können bei Bedarf sogar Ihren Ziel-View-Controller vorbereiten.