2016-09-20 2 views
0

Im Storyboard befindet sich eine Eigenschaft im Inspektorfenster mit der Aufschrift "Is Initial View Controller". Wie greife ich programmgesteuert auf diese Eigenschaft zu? Ich will es nicht ändern. Ich möchte nur überprüfen, ob der View-Controller derzeit der anfängliche View-Controller ist. Ich habe in AppDelegate Bedingungen angegeben, unter denen der View-Controller zum Root-View-Controller werden soll. Sobald es tatsächlich der Root-View-Controller ist, möchte ich etwas Code vom View-Controller selbst ausführen (aber NUR, wenn es der Root-View-Controller ist). Daher kann ich den Code nicht einfach über die ViewDidLoad-Methode ausführen. Ich möchte zuerst überprüfen, ob der View-Controller der Root-View-Controller ist, und wenn das der Fall ist, DANN möchte ich etwas Code ausführen. Irgendwelche Ideen?Wie überprüfe ich, ob der View Controller der Initial View Controller ist? (SWIFT 3)

+0

Ich würde diese Frage neu formulieren - was Sie wirklich suchen, ist eine Möglichkeit, zu überprüfen, was der aktuelle rootViewController ist, anstatt irgendetwas mit einem Storyboard anfängliche vc zu tun. – BJHStudios

+0

Sie können versuchen, die Ansicht des root-Viewcontrollers zu markieren und danach das Tag/view zu überprüfen. – Dasem

+0

@BJHStudios ja, tut mir leid, das ist nicht was ich meinte. Ich wusste nicht, was der wesentliche Unterschied zwischen diesen beiden Dingen war, aber ich suche nach einer Möglichkeit, zu überprüfen, was der anfängliche View-Controller (View-Controller, der zuerst angezeigt wird, nachdem App gestartet wurde). Müsste auch den Code innerhalb des AppDelegate ändern, weil ich einfach meine VC als rootViewController gesetzt habe, während ich es nur als die anfängliche VC einstellen wollte, die zuerst angezeigt wird. –

Antwort

1

Der erste View-Controller aus einem Storyboard ist nicht derselbe wie der Root-View-Controller für die App. Sie können beispielsweise mehrere Storyboards mit jeweils eigenen View-Controllern verwenden. Ein Teil des Codes hat möglicherweise auch den aktuellen rootViewController geändert und unterscheidet sich damit von dem ursprünglichen View-Controller, der von der App gestartet wurde.

Um zu überprüfen, ob ein aktueller View-Controller der Wurzel-View-Controller ist, verwenden:

if self == UIApplication.shared.keyWindow?.rootViewController { 
     /*do stuff*/ 
    } 

Seien Sie vorsichtig, wenn Sie diesen Ort, though. Ich würde den Check in ViewWillAppear oder ViewDidAppear statt ViewDidLoad tun.

+0

@FreddyBenson: Dies ist die richtige Antwort. Wenn es Ihre Frage beantwortet, wählen Sie es bitte als die richtige Antwort aus. – mttdbrd

Verwandte Themen