7

Ich versuche eine iPad App mit UISplitViewController und Storyboards zusammenzustellen. Die Masteransicht beginnt mit einem Navigationscontroller, der mit einer Tabellenansicht von 6 Menüoptionen verknüpft ist. Jede Zelle in der Tabelle verschiebt einen anderen Tabellenansicht-Controller auf den Navigationsstapel. Dies funktioniert gut für die Master-Ansicht. Jede Masteransicht verfügt über eine Tabellenliste, die beim Klicken auf einen anderen Ansichtscontroller im Detailbereich angezeigt werden muss. Ich habe dies derzeit mit einem Segment, das auf "Ersetzen" und "Detail teilen" eingestellt ist, das beim ersten Klicken auf eine Zeile funktioniert, aber sobald Sie eine andere Zeile in der Hauptansicht anklicken oder das Gerät drehen, stürzt die App ab mit EXC_BAD_ACCESS.iOS - UISplitViewController mit Storyboard - mehrere Masteransichten und mehrere Detailansichten

Ich bin ziemlich sicher, dass meine Probleme damit zu tun haben, wie der Delegat für den UISplitViewController eingerichtet ist. Ich bin verwirrt, wie dies verwendet werden sollte, wenn ich mehrere Master-VCs und mehrere Detail-VCs habe. Wo sollte der Delegiertencode platziert werden - Master oder Detail? Muss ich die Protokollereignisse UISplitViewControllerDelegate in jedem View-Controller implementieren?

Jede Hilfe wird geschätzt.

Antwort

16

Wenn der Split-View-Controllerdelegate der Detailansicht-Controller war, der ausgetauscht wurde, ist dies die Ursache des Absturzes. Der ersetzte Detailansicht-Controller wird freigegeben und der Split-View-Controller-Delegat ist keine Referenz mehr auf ein gültiges Objekt.

Sie können den Delegaten in prepareForSegue: sender: aktualisieren. Beispiel:

Welche Ansichtssteuerungen Sie für Delegaten verwenden, hängt von der Hierarchie Ihrer Ansichtssteuerung ab. Im einfachsten Fall müssen alle View-Controller, die dem SplitVC-Detail zugeordnet sind, Delegaten sein. Möglicherweise möchten Sie alle auf einer gemeinsamen Superklasse basieren, die die delegierte Logik für geteilte Split-View-Controller verarbeitet.

+0

Vielen Dank Chris, schöne Erklärung. –

+0

Hat meinen Tag gerettet. –

+0

Das hat mir wirklich geholfen! – Fogh

Verwandte Themen