wake-up-neo.com

Swift - Ansichtssteuerung mit der Aktionstaste ändern

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

enter image description here

Bitte geben Sie mir einen Rat, wenn Sie können. Vielen Dank.

8
Mohammad Nurdin

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)
15
Mohammad Nurdin

Eine Möglichkeit besteht darin, nur eine modale Auswahl von einer Schaltfläche vorzunehmen. Kein IBOutlet erforderlich.

enter image description here

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.

8
Steve Rosenberg

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 .

2
Shaba Aafreen

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.

1
FHS