2016-02-25 28 views
5

Nell'app Apple Watch ci sono due sottoclassi di WKInterfaceController. Il primo è l'ingresso di un altro, le loro relazioni sono nextPage con Interface Builder. Per il metodo awakeWithContext, willActivate e didDeactivate in ciascun InterfaceController, li ho stampati tutti mentre guardavo l'avvio dell'app.Qual è il ciclo di vita di Watch App?

E ho avuto questa uscita:

awakeWithcontext -> First 
awakeWithContext -> Second 
willActivate -> First 
willActivate -> Second 
didDeactivate -> Second 

e strisciare per la prossima InterfaceController:

willActivate -> Second 
didDeactivate -> First 

Così ora la domanda è:

Will tutto il metodo di tutte le InterfaceControllers awakeWithContext in Watch App essere licenziato finché lanciato?

E il metodo willActivate?

risposta

0

awakeWithContext viene chiamato sull'inizializzazione. Questo metodo verrà richiamato su tutte le pagine della tua app di controllo all'avvio.

willActivate viene chiamato quando il controller di interfaccia sta per essere visualizzato. Il motivo per cui viene chiamato il willActivate del secondo controller di interfaccia seguito da didDeactivate, è perché è la pagina successiva che può essere visualizzata sullo schermo. Questo accade per aiutare a caricare il prossimo controller dell'interfaccia con i dati rilevanti poiché potrebbe arrivare presto sullo schermo.

Pertanto, se si dispone di un controller di interfaccia di terza pagina, il suo willActivate seguito da didDeactivate verrà chiamato quando il secondo controller di interfaccia è sullo schermo.

Apple Doc su willActivate. Page-based navigation sull'orologio potrebbe non dirlo esplicitamente, ma aiutano sempre a leggere.

5

Il ciclo di vita delle app watchOS è come descritto di seguito.

awakeWithContext

Quando l'inizializzazione della pagina, awakeWithContext sarà chiamato. Questo è il primo metodo da chiamare e nessuna interfaccia utente è ancora visualizzata.

Si dovrebbe fare qualcosa come aggiornare gli array del modello per le viste delle tabelle, l'impostazione delle proprietà, ecc. In awakeWithContext. Questo metodo ha un lavoro molto simile agli inizializzatori in classi semplici (init()), ma questa volta in WKInterfaceController s.

La risposta della prima domanda:

awakeWithContext saranno chiamati in tutte le pagine non appena le watchos lancia app.

willActivate

Quando il controller di interfaccia è in procinto di essere visualizzato, willActivate sarà chiamato.

È necessario aggiornare i valori dell'etichetta, le azioni e qualsiasi altra cosa correlata agli elementi di visualizzazione.

La risposta della tua seconda domanda:

willActivate saranno chiamati in tutte le pagine, non appena l'applicazione watchos lanci, ma in contrasto con awakeWithContext, questo sarà chiamato nuovo non appena si visualizza il controller (in altre parole, quando si si accede all'interfaccia desiderata).

Per la prima volta che si avvia l'applicazione, quando si va ad un altro, la sua willActivate saranno chiamati tutti i controllori didDeactivate sarà chiamato, ad eccezione della corrente, e prima di didDeactivate essere chiamati sul primo.

Così il ciclo di vita è:

1- awakeWithContext di tutte le visualizzazioni

2- willActivate di tutte le visualizzazioni

3- didDeactivate di tutte le viste, tranne la prima (quella attuale)

E quando strisciando al secondo:

1- willActivate della seconda vista

2- didDeactivate della prima vista