7

Sto provando a creare un'app per iPad utilizzando UISplitViewController e storyboard. La vista principale inizia con un controller di navigazione collegato a una vista tabella di 6 opzioni di menu. Ogni cella nella tabella spinge un altro controller della vista tabella sullo stack di navigazione. Funziona bene per la vista principale. Ogni vista principale ha un elenco di tabelle che, quando si fa clic, devono visualizzare un diverso controller di visualizzazione nel riquadro dei dettagli. In questo momento ho eseguito questa operazione con un passaggio impostato su "Sostituisci" e "Dividi dettagli" che funziona la prima volta che si fa clic su una riga, ma non appena si fa clic su un'altra riga nella vista principale o si ruota il dispositivo, l'app si arresta in modo anomalo con EXC_BAD_ACCESS.iOS - UISplitViewController con storyboard: più viste principali e più viste di dettaglio

Sono abbastanza sicuro che i miei problemi riguardano il modo in cui il delegato è configurato per UISplitViewController. Sono confuso su come dovrebbe essere usato quando ho più master VC e più dettagli VC. Dove dovrebbe essere collocato il codice delegato: master o dettaglio? Devo implementare gli eventi del protocollo UISplitViewControllerDelegate in ogni controller di visualizzazione?

Qualsiasi aiuto apprezzato.

risposta

16

Se il delegato del controller della vista divisa era il controller della vista dettagli che era stato sostituito, questa è la causa dello schianto. Il controller della vista di dettaglio sostituito viene deallocato e quindi il delegato del controller della vista divisa non è più un riferimento a un oggetto valido.

È possibile aggiornare il delegato in prepareForSegue: mittente :. Ad esempio:

Quali controller di vista utilizzati per i delegati dipende dalla gerarchia del controller di visualizzazione. Nel caso più semplice, i controller di vista assegnati ai dettagli splitVC dovranno probabilmente essere delegati. Si consiglia di basarli tutti su una super classe comune che gestisce la logica di delega del controller della vista divisa condivisa.

+0

Grazie mille Chris, bella spiegazione. –

+0

Mi ha salvato la giornata. –

+0

Questo mi ha davvero aiutato! – Fogh