2014-09-28 11 views
25

Chiedendosi se qualcun altro ha riscontrato questo problema di recente ...presentingViewController è pari a zero quando si utilizza presentViewController: animato: il completamento: in iOS 8

Per uno dei miei controller di vista, solo su iOS 8, dopo aver chiamato presentViewController:animated:completion:, il il controller della vista presentato ha self.presentingController come zero. Va bene su iOS7 e non succede anche su un altro controller di visualizzazione.

Il documentation dice che dovrebbe essere impostato, purché il controller di visualizzazione presentato sia stato presentato in modo modale. Dato che funziona in iOS 7, potrebbe trattarsi di un bug di iOS 8?

Sono stato in grado di aggirare il problema utilizzando un approccio di contenimento del contenitore di visualizzazione, ma sarebbe opportuno che qualcuno lo abbia già visto e conosca la causa principale che ha attivato questo comportamento.

grazie

+0

Dove l'hai registrato. Non è null in viewWillAppear, o viewDidAppear, ma è in viewDidLoad. Non ricordo se è diverso da iOS 7. – rdelmar

+1

Il controller presentato è di terze parti e non ho accesso al passaggio (FBFriendPickerViewController). Lo vedo come zero quando colpisco un punto di interruzione sulla linea dopo la chiamata a 'presentViewController: animated: completion:' dal punto di interruzione del codice del controller che presenta –

risposta

37

avuto un problema simile con iOS 8, dove presentingController è nullo quando controllando il valore in viewDidLoad.

Quando viene chiamato viewDidLoad, non è possibile garantire che la gerarchia del controller di visualizzazione sia caricata nella struttura di navigazione. Spostare la logica in una fase successiva (ad esempio: viewWillAppear) dovrebbe risolvere il problema in quanto presentingController dovrebbe essere caricato da allora.

+2

Questo mi ha aiutato. Avevo bisogno di un puntatore al 'presentationViewController' in una funzione. Ho creato una proprietà, accesso e archiviare un puntatore a 'presentingViewController' in' viewDidAppear' per utilizzarlo in seguito. – Airuop

Problemi correlati