2011-10-27 10 views
25

Nel mio appdelegate.m, applicationDidFinishLaunching non viene richiamato. Ho letto che questo è dovuto al fatto che il delegato della mia "Applicazione" non è collegato correttamente, ma non so come collegarlo. Quello che faccio è fare clic con il pulsante destro del mouse su Applicazione dal file XIB e trascinare il delegate outlet da qualche parte ... ma non so dove. Qualsiasi aiuto apprezzato. Grazie!applicationDidFinishLaunching non invocato

risposta

44

Nel MainMenu.xib, assicurarsi che ci sia un'istanza della classe AppDelegate. Per crearne uno, trascina un oggetto semplice (cubo blu) nell'elenco e imposta il suo nome di classe su AppDelegate (o qualunque sia il nome della tua classe delegata dell'app).

Anche in MainMenu.xib, per collegarlo, trascinare una connessione dall'oggetto Application all'istanza AppDelegate (il cubo blu) e collegarla all'outlet dei delegati.

Fatto.

+5

Mi hai risparmiato un sacco di tempo, grazie! Oltre a ciò ho dovuto collegarlo al proprietario del file. –

+1

Il fulmine concettuale da saltare è capire che un pennino/xib è un insieme di * istanze * di oggetti congelati. In un'applicazione in esecuzione, di solito c'è solo uno di ciascuno dei principali elementi architettonici come l'istanza di NSApp e il suo delegato. I controller di documenti/gli assembly di visualizzazione sono l'ovvia eccezione, ma anche in questo caso, un prototipo separato di "documento" xib contiene un oggetto che rappresenta l'istanza di doc, una finestra principale, ecc. Tuttavia, non includere un'istanza pre-cotta di un modello oggetto in uno xib (come una Persona), poiché questo è variabile (di solito non c'è una Persona). Concetti chiave. :-) –

+1

Grazie per questo! Ho già passato un giorno a cercare di capire perché il mio assistente di login ha smesso di funzionare all'improvviso. Ho eliminato per errore e successivamente creato un nuovo MainMenu.xib – Tibidabo

2

Ecco qualcosa da provare se avete aggiornato a Swift 3:

dare uno sguardo al vostro "AppDelegate.swift" e assicurarsi che la linea in questione è simile al seguente:

func applicationDidFinishLaunching(_ aNotification: Notification) { 

in contrapposizione a questo:

func applicationDidFinishLaunching(_ aNotification: NSNotification) { 

Ho appena aggiornato un'app e non ho pensato di controllare. Il risultato è stato il lancio della mia app, ma il metodo pertinente non è mai stato chiamato. Ovviamente, dovresti controllare le altre funzioni che hai che prendono oggetti di notifica.

+0

Grazie, è stato risolto il problema, proveniente da un'app Swift 2. –

Problemi correlati