wake-up-neo.com

Was ist eine StoryBoard-ID und wie kann ich diese verwenden?

ich bin neu in der Entwicklung von IOS) und habe kürzlich mit Xcode 4.5 begonnen. Ich habe für jeden viewController festgestellt, dass ich einige Identitätsvariablen einschließlich der Storyboard-ID festlegen kann. Was ist das und wie kann ich es verwenden?

enter image description here

Ich habe angefangen, nach Stackoverflow zu suchen und konnte keine Erklärung dafür finden. Ich nahm an, dass es nicht irgendein dummes Label ist, das ich einstellen kann, um mich an meinen Controller zu erinnern, oder? Was tut es?

108
RTB

Die Storyboard-ID ist ein String-Feld, mit dem Sie einen neuen ViewController basierend auf diesem Storyboard-ViewController erstellen können. Eine Beispielverwendung wäre von jedem ViewController:

//Maybe make a button that when clicked calls this method

- (IBAction)buttonPressed:(id)sender
{
    MyCustomViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];

   [self presentViewController:vc animated:YES completion:nil];
}

Dadurch wird ein MyCustomViewController erstellt, der auf dem Storyboard ViewController basiert, das Sie "MyViewController" genannt haben, und über Ihrem aktuellen View Controller angezeigt

Und wenn Sie in Ihrer App delegiert sind, können Sie verwenden

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                         bundle: nil];

Edit: Swift

@IBAction func buttonPressed(sender: AnyObject) {
    let vc = storyboard?.instantiateViewControllerWithIdentifier("MyViewController") as MyCustomViewController
    presentViewController(vc, animated: true, completion: nil)
}

Bearbeiten für Swift> = 3:

@IBAction func buttonPressed(sender: Any) {
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController
    present(vc, animated: true, completion: nil)
}

und

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
129
Eric

Um zu Eric's Antwort hinzuzufügen und sie für Xcode 8 und Swift 3 zu aktualisieren:

Eine Storyboard-ID macht genau das, was der Name impliziert: Sie identifiziert. Nur dass es identifiziert ein Controller anzeigen in einer Storyboard-Datei. So weiß das Storyboard, welcher View Controller welcher ist.

Lassen Sie sich nicht durch den Namen verwirren. Eine Storyboard-ID identifiziert kein "Storyboard". Ein Storyboard stellt laut Apples Dokumentation "die Ansichts-Controller für die gesamte oder einen Teil der Benutzeroberfläche Ihrer App dar". Wenn Sie also so etwas wie das folgende Bild haben, haben Sie ein Storyboard mit dem Namen Main.storyboard, das zwei Ansichts-Controller enthält, denen jeweils eine Storyboard-ID (ihre ID im Storyboard) zugewiesen werden kann.

enter image description here

Sie können die Storyboard-ID eines View Controllers verwenden, um diesen View Controller zu instanziieren und zurückzugeben. Sie können es dann beliebig manipulieren und präsentieren. Angenommen, Sie möchten einen View-Controller mit dem Bezeichner "MyViewController" anzeigen, wenn eine Schaltfläche gedrückt wird. Gehen Sie dazu folgendermaßen vor:

@IBAction func buttonPressed(sender: Any) {
    // Here is where we create an instance of our view controller. instantiateViewController(withIdentifier:) will create an instance of the view controller every time it is called. That means you could create another instance when another button is pressed, for example.
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController
    present(vc, animated: true, completion: nil)
}

Bitte beachten Sie die Änderungen in der Syntax.

11
Taiwosam