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.
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):
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:
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()
:
Das ist vielleicht eine zu lange Antwort, aber ich habe das Problem mit persegnue anstelle von showDetailViewController
gelöstTags und Links swift2 ios9 uinavigationcontroller uisplitviewcontroller