2016-08-29 15 views
6

Próbuję przejść na kontroler widoku. identyfikator segue to "Pomarańczowy" (drugi kontroler widoku to tylko pomarańczowy widok). Kontroler widoku przechodzi przez scenorys i jest połączony z widokiem obrazu w moim głównym kontrolerze widoku. Chcę uruchomić tę funkcję za pomocą narzędzia do rozpoznawania gestów panoramowania. Tak więc po wykryciu patelni przechodzi on tylko do kontrolera widoku.Jak przejść do widoku kontrolera na panGesture

To moja próba:

@IBOutlet var panGesture: UIPanGestureRecognizer! 

@IBAction func onPan(sender: UIPanGestureRecognizer) { 
    if panGesture.state == .Ended { 
     print("panned") 
    performSegueWithIdentifier("Orange", sender: sender) 
    } 
} 

Jednak to nie działa. Wiem, że to wykrywa patelnię, ale nie wykonuje ona przejścia.

czytam jak przedstawić segue od IOS - How to segue programmatically using swift

+0

'jeśli panGesture.state == .Ended' działa? –

+0

@ Mr.UB Tak, zostanę wydrukowany. – Marcel

+0

gdzie rejestrujesz panGesture za pomocą akcji onPan? –

Odpowiedz

4

Spróbuj prezentując ViewController poprzez instancji: -

  • Upewnij się, że masz Navigation Controller osadzić w pierwszej VC

  • podając swoje ViewController StoryBoardID: - Wybierz ViewController w twojej storyboard, który chcesz zaprezentować ->Inspektor tożsamości ->StoryBoard ID Podaruj swojemu zespołowi VC identyfikator scenorysu powiedzmy: "vc2SceneVC_ID"

  • instancję i nacisnąć VC tak: -

    @IBAction func onPan(sender: UIPanGestureRecognizer) { 
    
    if panGesture.state == .Ended { 
    print("panned") 
    
    let vc2Scene = self.storyboard?.instantiateViewControllerWithIdentifier("vc2SceneVC_ID") as! VC2 
    self.navigationController?.pushViewController(vc2Scene, animated: true) 
    
    } 
    

Jabłko Dokumentacja kontrolera nawigacji: - UINavigationController Apple Doc

PS: - Wolę tworzenie instancji nawigowania za pomocą ViewControllers z instancją raczej performSegueWithIdentifier("Orange", sender: sender) Ponieważ sposób, w jaki można przesyłać dane z powrotem do kontrolerów viewController, w większości przypadków zapobiega to również wyciekom pamięci.

+0

Dzięki! to działa, ale jakikolwiek pomysł, dlaczego muszę włożyć do kontrolera nawigacyjnego? – Marcel

+0

Kontroler Nawigacji jest podobny do posiadacza koguta wahadłowego (otwartego zarówno u góry, jak i od dołu), można naciskać i pop VC, ale VC musi wiedzieć, gdzie znajduje się w indeksie, w zasadzie Kontroler nawigacyjny będzie utrzymywał stos kontrolerów widoku. – Dravidian

+0

@Marcel Nie musisz używać kontrolera nawigacyjnego, aby to zrobić, –

1

Orange musi mieć identyfikator swojej segue w serii ujęć, a nie identyfikator widoku kontrolera.

Jeśli identyfikator segue jest ustawiony prawidłowo, spróbuj przetestować, czy Twój oddzwaniany gest znajduje się w głównym wątku.

Poinformuj mnie w komentarzach, z którymi masz problemy.

+0

Przepraszam za moje złe sformułowanie, identyfikator Segue to "Pomarańczowy" – Marcel

+0

@Marcel spróbuj ustawić zero w nadawcy lub self –

+0

To nie zadziałało, ale dziękuję za pomoc! – Marcel

2

Etap 1: Control + z pierwszego ViewController (gdzie laboratorium widok sterownika jest pokazany), a opór drugiego ViewController

etap 2: wybieranie typu segue

krok 3: wybierz segue i ustawić identyfikator

i gdzie trzeba wykonać segue zadzwoń self.performSegueWithIdentifier("test", sender: nil)

Przepraszam za zły angielski

+0

W twoim przypadku zadzwoń do numeru po wydrukowaniu ("przesuwane"). –

+0

To nic innego, jak to, co OP opublikował. Przeczytaj dokładnie to pytanie, zanim opublikujesz odpowiedź. :) – Dravidian

+0

@Dravidian Ok Dziękujemy za Twoją korektę. –

Powiązane problemy