2015-02-22 8 views
6

Rozpocząłem nowy projekt Swift, gram z różnymi rzeczami, aby zobaczyć, jak okablowanie współpracuje ze scenorysami, ponieważ nigdy wcześniej ich nie używałem.Swift: Jak Delegat aplikacji powinien odwoływać się do kontrolera widoku?

Projekt jest aplikacją z jednym widokiem, korzystającą z domyślnego scenorysu utworzonego przez Xcode 6.1. Generuje klasy AppDelegate.swift i ViewController.swift, a także Main.storyboard.

Btw, ja niby schodzili z tego poradnika:

http://www.raywenderlich.com/74904/swift-tutorial-part-2-simple-ios-app

Mam rzeczy pracujących z przyciskiem i kilka kontroli TextView że dodałem pomocą storyboard Interfejs Builder.

Co chciałbym teraz zrobić, to podpiąć do kontrolera widoku aplikację zgłoszoną do aplikacji didFinishLaunching.

Znalazłem wiele artykułów StackOverflow omawiających to, jednak przykłady są wszędzie wokół tworzenia własnego kontrolera widoku. Chcę po prostu uzyskać odniesienie do kontrolera widoku, który został uruchomiony za pomocą storyboardu.

Jaki jest najlepszy sposób na zrobienie tego? Możesz wskazać mi odpowiednie dokumenty lub inne posty.

+0

AppDelgate zawsze ma odniesienie do kontrolera widoku korzeń i może być określany przez AppDelegate.window.rootViewController nieruchomości – Literphor

+2

Ostrożnie rozważ wykonanie tego, co próbujesz zrobić w ViewController, a nie AppDelegate. Powszechnym problemem jest zbyt wiele w AppDelegate. Zadaniem jest reagowanie na zdarzenia związane z uruchomieniem i inne zewnętrzne rzeczy związane z Twoją aplikacją. jeśli robisz o wiele więcej, przemyśl swój projekt. To powiedziawszy, @Litephor jest poprawny. – picciano

Odpowiedz

7

końcu znalazłem ten artykuł na checking the current view controller, który miał logikę szukałem:

var myViewController : ViewController! 
... 
if let viewControllers = self.window?.rootViewController?.childViewControllers { 
    for viewController in viewControllers { 
     if viewController.isKindOfClass(ViewController) { 
      myViewController = viewController as ViewController 
      println("Found the view controller") 
     } 
    } 
} 
Powiązane problemy