Istnieje rzeczywiście odpowiedź bez kodu zakodowanego na stałe. W swoim scenorysie możesz kontrolować przeciąganie przycisku do następnego kontrolera widoku i definiowanie tam przejścia. Zapewni to, że za każdym razem, gdy naciśniesz przycisk, rozpocznie się segue. Możesz to zobaczyć w "Inspektorze połączeń" przycisku na wyzwalanych kostkach.
Jeśli chcesz umieścić dane w docelowym kontroler widoku, możesz dodać brak działania do przycisku i umieścić dane w przygotowaniu do funkcji przełączania. Fajną rzeczą jest to, że wyzwolone seledy będą nadal wyzwalane z przycisku. Ta część będzie wyglądać następująco:
@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
}
}
W ten sposób nie trzeba żadnych jawnie wpisanej ciągi dla identyfikatorów Segue, na identyfikatorach storyboard, itp i można nawet przygotować swój punkt docelowy kontroler w razie potrzeby.
Chcę zrobić programowo –
Dodałem instrukcje programistyczne dla VC. Przykład z Mini nie zadziała, dopóki nie użyjesz kontrolera nawigacyjnego. –
Spróbuję najpierw –