Unsymmetrische Aufrufe zum Starten / Beenden von Darstellungsübergängen in UISplitViewController

8

Mein UISplitViewController funktioniert grundsätzlich wie ein Charm, außer dass beim ersten Wechsel (nur beim ersten Mal!) von der Haupttabellenansicht zur Detailansicht eine ärgerliche Fehlermeldung angezeigt wird.

%Vor%

Sowohl der Master- als auch der Detailansicht-Controller sind in einem UINavigationController eingebettet. Der Fehler tritt jedoch nur auf, wenn Folgendes festgelegt wird (was für das Logikverhalten auf dem iPhone erforderlich ist):

%Vor%

Es wäre großartig, wenn jemand eine Lösung für dieses Problem anbieten könnte, danke im Voraus.

Übrigens: Der Split-View-Controller wurde im Storyboard eingerichtet

Die Darstellung des Detailansicht-Controllers erfolgt in der Methode tableView:didSelectRowAtIndexPath: wie folgt:

%Vor%     
borchero 27.12.2015, 18:42
quelle

2 Antworten

2

Wahrscheinlich wird Ihre erste Umwandlung von Master ( UITableView in UIViewController ?) zu Detail ( UIViewController ) in Ihrem UISplitViewController gestartet, bevor die aktive / aktuelle Ansicht die Anzeige beendet hat.

Ein möglicher Grund dafür ist, dass Sie möglicherweise versuchen, die erste "Instanz" der Detailansicht in der viewDidLoad() Methode Ihres Master UIViewController zu präsentieren? In einem solchen Fall versucht Ihre App möglicherweise, die Detailansicht vor dem Erscheinen der Master-Ansicht zu präsentieren . Beachten Sie, dass hier der Unterschied zwischen view did View und view besteht:

  

überschreibt func viewDidLoad ()

     

Beschreibung:

     

Wird aufgerufen, nachdem die Ansicht des Controllers in den Speicher geladen wurde.

     

Diese Methode wird aufgerufen, nachdem der View-Controller seine Ansicht geladen hat   Hierarchie in den Speicher .

     

override func viewDidAppear (animiert: Bool)

     

Beschreibung:

     

Benachrichtigt den View-Controller, dass seine Ansicht zu einer Ansicht hinzugefügt wurde   Hierarchie . Sie können diese Methode überschreiben, um zusätzliche Aufgaben auszuführen   verbunden mit der Präsentation der Ansicht.

Nun, da Ihre Frage nicht zeigt, wie Sie Ihre ursprüngliche Detailansicht laden, wird der folgende Hinweis vielleicht bereits von Ihnen selbst beachtet, aber wie auch immer: wenn Ihre Detailansicht von viewDidLoad() dargestellt wird, versuchen Sie dies zu verschieben Die Methode viewDidAppear() :

%Vor%     
dfri 27.12.2015 19:36
quelle
0

Das ist vielleicht eine zu lange Antwort, aber ich habe das Problem mit persegnue anstelle von showDetailViewController

gelöst     
Naveen Ramanathan 20.08.2016 14:02
quelle