2014-10-20 22 views
21

w Swift Mam przycisk utworzony programmaticaly używając:Jak utworzyć przejście, które można wywołać z przycisku utworzonego programowo?

var button = UIBarButtonItem(title: "Tableau", style: .Plain, target: self, action: "tabBarTableauClicked") 

chcę, że gdy użytkownik kliknie przycisk zmienia viewControllers. Oto kod dla tabBarTableauClicked:

func tabBarTableauClicked(){ 
    performSegueWithIdentifier("tableau", sender: self) 
} 

Ale to oczywiście nie działa, ponieważ nie ma segue z identyfikatorem o nazwie „tableau”.

I nie mogę utworzyć przejścia za pomocą Ctrl +, kliknij przycisk i przeciągnij do drugiego viewController, ponieważ przycisk jest tworzony programowo, a nie w Storyboard.

Jak w programie Swift mogę utworzyć programowanie z identyfikatorem programowo?

+1

segues nie mogą być tworzone poza ujęć. http://stackoverflow.com/questions/9674685/creating-a-segue-programmatically – user3746428

+0

Czy Twój pierwszy i drugi kontroler widoku jest w scenorysie? – vacawama

+0

Tak, ale przycisk nie jest –

Odpowiedz

81

Oto jak ustawić przejście tak, aby można było nazywać się programowo.

  • Sterowanie drag z ViewController ikonę w pierwszym kontrolerze widoku do drugiego kontrolera widoku.
  • Kliknij na segue strzałka między dwoma kontrolerami widoku, aw Atrybuty Inspector po prawej stronie, podać Segue identyfikator (tableau w danym przypadku).
  • Następnie możesz wywołać zmianę z performSegueWithIdentifier w swoim kodzie.

enter image description here

można przeczytać więcej na temat konfigurowania i korzystania segues here.

+0

Próbowałem tego, ale nadal otrzymuję to samo "nie ma identyfikatora" someIDdentifier "" error ... – SomeGuy

+17

Czy to nie było celem tego pytania PROGRAMMATYCZNIE? –

+3

@ MarkLöwe, OP chciał wywołać segue z przycisku, który stworzył programowo. Mylił się, sądząc, że nie można połączyć kabiny, ponieważ przycisk nie istnieje w Storyboard. Pokazałem mu, że segue może zostać połączony, dopóki oba VC istnieją w Storyboard, a następnie programowany przycisk może wywołać ten ruch. Rozwiązałem to, co chciał, jeśli nie dokładnie to, o co pytał. – vacawama