2015-08-05 8 views
5

Ho uno storyboard di root con un pulsante che spinge ViewControllerB.Perché: "Tentativo di caricare .. mentre deallocating ...: UISearchController:"

ViewControllerB ha un controller di ordinamento UISortController.

ViewControllerB ha un metodo "indietro" che è controllato dal controller di navigazione radice.

sto ottenendo il seguente avviso:

Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UISearchController: 0x7ff10258ba60>)

ho usato Apple's sample (è richiesta l'iscrizione) per aggiungere il nuovo UISearchController.

Qualcuno si è imbattuto in questo? Come lo risolvo?

risposta

1

mi consiglia di utilizzare Storyboard di svolgimento Segues invece: https://developer.apple.com/library/ios/technotes/tn2298/_index.html

Questo post perspicace ha anche una ricchezza di molto utile dettaglio di implementazione:

What are Unwind segues for and how do you use them?

+0

Buona idea. Grazie. Ci proverò ora. –

+0

Non sono sicuro di come implementarlo. La funzione di retromarcia è effettivamente controllata dal controller di navigazione VC principale. Dovrei semplicemente scavalcare questo con il mio pulsante? –

+0

Nota, ho aggiornato la mia domanda in modo che sia più accurata. –

1

ho incontrato il messaggio di errore stessa console , ma si noti quanto segue per quanto riguarda il mio progetto Xcode:

  • segues to controller di navigazione deve rimanere grazie al loro utilizzo con un controller di visualizzazione divisa (per il controller della vista di dettaglio);
  • (e in base ai commenti di @AndrewEbling sopra) il codice non richiede segui di svolgimento poiché il controller di navigazione gestisce automaticamente una parte delle attività;
  • Inoltre, il codice non richiede svolgimenti successivi poiché i blocchi vengono utilizzati per impostare le proprietà nel controllore della vista principale.

Grazie ai commenti di Leehro e Clafou in this SO answer il messaggio di errore console è stata soppressa utilizzando seguente riga di codice nella viewDidLoad (si noti che non v'è alcuna necessità di inserire questo in dealloc):

[self.searchController loadViewIfNeeded]; (nota disponibile da iOS 9).

Problemi correlati