2015-02-22 13 views
6

Ho iniziato un nuovo progetto Swift, sto giocando con le cose per vedere come funziona il cablaggio con gli storyboard poiché non li ho mai usati prima.Swift: Come dovrebbe il Delegato app avere un riferimento al View Controller?

Il progetto è un'app a vista singola che utilizza lo storyboard predefinito creato da Xcode 6.1. Genera le classi AppDelegate.swift e ViewController.swift e Main.storyboard.

Btw, Sono un po 'andare fuori di questo tutorial: cose

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

c'ho che lavorano con un pulsante e un paio di controlli TextView che ho aggiunto utilizzando l'storyboard Interface Builder.

Quello che mi piacerebbe fare ora è collegare l'applicazione del delegato dell'app che ha generato l'evento sul controller di visualizzazione.

func application(application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: 
    [NSObject: AnyObject]?) -> Bool { 
} 

ho trovato molti articoli StackOverflow parlano di questo, tuttavia gli esempi sono tutti intorno istanziare il proprio controller della vista. Voglio semplicemente ottenere un riferimento al controller di visualizzazione che è stato lanciato tramite lo storyboard.

Qual è il modo migliore per farlo? Sentiti libero di indicarmi i documenti appropriati o altri post.

+0

L'AppDelgate ha sempre un riferimento al controller della vista radice e può essere riferimento tramite la struttura AppDelegate.window.rootViewController – Literphor

+2

Considera attentamente di fare ciò che stai cercando di fare nel ViewController piuttosto che in AppDelegate. Un problema comune è mettere troppo in AppDelegate. Il suo compito è reagire agli eventi di lancio e ad altre cose esterne che accadono alla tua app. se stai facendo molto di più, ripensa il tuo progetto. Detto questo, @Litephor è corretto. – picciano

risposta

7

ho finalmente trovato questo articolo su checking the current view controller, che aveva la logica Cercavo:

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") 
     } 
    } 
} 
Problemi correlati