Co to jest identyfikator StoryBoard i jak mogę go używać?
110
Jestem nowy w programowaniu IOS i niedawno zacząłem w Xcode 4.5. Widziałem dla każdego viewController, że mogę ustawić pewne zmienne tożsamości, w tym identyfikator storyboardu. Co to jest i jak mogę tego używać?
Zacząłem szukać na stackoverflow i nie mogłem znaleźć żadnego wytłumaczenia. Założyłem, że to nie jest jakaś głupia etykieta, którą mogę ustawić, aby zapamiętać mój kontroler, prawda? Co to robi?
Identyfikator serii ujęć to pole typu String, którego można użyć do utworzenia nowego ViewController na podstawie tego scenariusza ViewController. Przykładowe użycie pochodzi z dowolnego 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];}
Spowoduje to utworzenie MyCustomViewController na podstawie scenorysu ViewController o nazwie „MyViewController” i zaprezentowanie go nad bieżącym kontrolerem widoku
Dostęp do self.storyboard można uzyskać z dowolnego kontrolera widoku. Zmienię teraz swoją odpowiedź, abyś mógł zobaczyć
Eric
A co w razie potrzeby, aby uzyskać do niego dostęp z mojej AppDelegate lub dowolnej innej klasy?
RTB
Dodano kolejną edycję pokazującą, jak uzyskać dostęp do serii ujęć z dowolnego pliku.
Eric
1
self.storyboardmożna uzyskać dostęp z dowolnego kontrolera widoku, który został załadowany z serii ujęć. Jeśli kontroler widoku nie został załadowany z serii ujęć, ta właściwość jest równa zero.
rob mayoff
13
Aby dodać do odpowiedzi Erica i zaktualizować ją dla Xcode 8 i Swift 3:
Identyfikator scenorysu robi dokładnie to, co sugeruje nazwa: identyfikuje. Wystarczy, że identyfikuje się kontroler widoku w pliku ujęć. W ten sposób storyboard wie, który kontroler widoku jest który.
Nie dajcie się zmylić nazwą. Identyfikator serii ujęć nie identyfikuje „scenorysu”. Scenorys, zgodnie z dokumentacją Apple, „przedstawia kontrolery widoku dla całego lub części interfejsu użytkownika aplikacji”. Tak więc, gdy masz coś takiego jak na poniższym obrazku, masz scenorys o nazwie Main.storyboard, który ma dwa kontrolery widoku, z których każdy może otrzymać identyfikator serii ujęć (ich identyfikator w serii ujęć).
Możesz użyć identyfikatora scenorysu kontrolera widoku, aby utworzyć wystąpienie i zwrócić ten kontroler widoku. Następnie możesz manipulować nim i prezentować go w dowolny sposób. Aby skorzystać z przykładu Erica, powiedzmy, że chcesz zaprezentować kontroler widoku z identyfikatorem „MyViewController” po naciśnięciu przycisku, zrobiłbyś to w ten sposób:
@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)}
Żółta ikona ostrzeżenia wskazuje, że jest to spowodowane faktem, że drugi kontroler widoku nie ma punktu wejścia i / lub identyfikatora. Można temu zaradzić, nadając mu identyfikator scenorysu lub łącząc go z innym kontrolerem widoku w serii ujęć. W ten sposób storyboard wie, jak do niego dotrzeć i go zidentyfikować.
Taiwosam
Nie mogłem znaleźć pola Storyboard ID, więc dziękuję za zdjęcie. Jest na tej samej pozycji na Xcode 9.
self.storyboard
self.storyboard
można uzyskać dostęp z dowolnego kontrolera widoku, który został załadowany z serii ujęć. Jeśli kontroler widoku nie został załadowany z serii ujęć, ta właściwość jest równa zero.Aby dodać do odpowiedzi Erica i zaktualizować ją dla Xcode 8 i Swift 3:
Identyfikator scenorysu robi dokładnie to, co sugeruje nazwa: identyfikuje. Wystarczy, że identyfikuje się kontroler widoku w pliku ujęć. W ten sposób storyboard wie, który kontroler widoku jest który.
Nie dajcie się zmylić nazwą. Identyfikator serii ujęć nie identyfikuje „scenorysu”. Scenorys, zgodnie z dokumentacją Apple, „przedstawia kontrolery widoku dla całego lub części interfejsu użytkownika aplikacji”. Tak więc, gdy masz coś takiego jak na poniższym obrazku, masz scenorys o nazwie Main.storyboard, który ma dwa kontrolery widoku, z których każdy może otrzymać identyfikator serii ujęć (ich identyfikator w serii ujęć).
Możesz użyć identyfikatora scenorysu kontrolera widoku, aby utworzyć wystąpienie i zwrócić ten kontroler widoku. Następnie możesz manipulować nim i prezentować go w dowolny sposób. Aby skorzystać z przykładu Erica, powiedzmy, że chcesz zaprezentować kontroler widoku z identyfikatorem „MyViewController” po naciśnięciu przycisku, zrobiłbyś to w ten sposób:
Zwróć uwagę na zmiany w składni.
źródło