2016-09-20 10 views
0

В раскадровке на панели инспектора есть свойство, которое гласит: «Является ли контроллер начального просмотра». Как получить доступ к этому свойству программно? Я не хочу его менять. Я просто хочу проверить, является ли контроллер представления в настоящее время начальным контроллером представления. Я указал условия в AppDelegate, в соответствии с которыми он должен включить контроллер представления в контроллер корневого представления. Как только он на самом деле является контроллером корневого представления, я хочу запустить некоторый код из самого контроллера представления (но ТОЛЬКО, когда он является контроллером корневого представления). Поэтому я не могу просто запустить код из метода ViewDidLoad. Я хочу проверить, является ли контроллер представления первым контроллером корневого представления, и если это так, ТОГДА я хочу запустить некоторый код. Есть идеи?Как проверить, является ли контроллер представления исходным контроллером? (SWIFT 3)

+0

Я бы переформулировал этот вопрос - то, что вы действительно ищете, - это способ проверить, что представляет собой текущий rootViewController, а не что-то связанное с начальным vc раскадровки. – BJHStudios

+0

Вы можете попытаться пометить представление корневого диспетчера представлений и после этого проверить тег/представление. – Dasem

+0

@BJHStudios да, извините, это не то, что я имел в виду. Не понял, какова существенная разница между этими двумя вещами, но я ищу способ проверить, что представляет собой контроллер начального представления (контроллер просмотра, который отображается сначала после завершения запуска приложения). Также возможно изменить код внутри AppDelegate, потому что я просто установил свой VC как свой rootViewController, в то время как все, что я хотел сделать, это установить его как начальный VC, который сначала отображается. –

ответ

1

Контроллер начального представления из раскадровки не совпадает с контроллером корневого представления для приложения. У вас может быть несколько раскадровки, например, каждый со своими собственными начальными контроллерами представлений. Некоторая часть кода, возможно, также изменила текущий rootViewController, сделав его отличным от начального контроллера представления, запущенного из приложения.

Чтобы проверить, является ли текущий контроллер представления является контроллер представления корня, используйте:

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

Будьте осторожны, где вы разместите это, хотя. Я бы сделал проверку в viewWillAppear или viewDidAppear вместо viewDidLoad.

+0

@FreddyBenson: Это правильный ответ. Если он отвечает на ваш вопрос, выберите его как правильный ответ. – mttdbrd

 Смежные вопросы

  • Нет связанных вопросов^_^