2016-07-29 3 views
1

Я использую класс, который расширяет UITabBarController. Мне нужно установить свойство self.tabBarController.selectedIndex моего класса для переключения вкладок.Программно получить экземпляр контроллера вида

Так как я хочу, чтобы установить эту переменную/вызвать метод, который изменяет эту переменную из другого класса I должен иметь экземпляр моего пользовательского класса, который называется TabsController

До сих пор я смотрел на эти две должности, но они связаны с использованием раскадровки и я делаю почти все программно, Infact это вся моя раскадровки:

enter image description here

Как программно решить эту проблему?

Get Instance Of ViewController From AppDelegate In Swift

Access the instance of a Viewcontroller from another in swift

ответ

2

UITabBarController s являются most often used в качестве приложения rootViewController. В то время как вы не используете раскадровки, после запуска приложения, если вы устанавливаете экземпляр TabsController в окне вашего приложения-х rootViewController, вы можете обратиться к этому экземпляру из любой точки в вашем приложении, как так:

if let tabsController = UIApplication.sharedApplication().delegate?.window??.rootViewController as? TabsController { 
    tabsController.selectedIndex = 2 
} 
+0

Спасибо! Этот код работает. Быстрый вопрос, вы говорите, что если я установлю экземпляр 'TabsController' в' rootViewController', то я могу обратиться к этому экземпляру с помощью вашего кода. Тем не менее, я просто пробовал этот код и работал, я не набрал никакого кода, который устанавливает 'rootViewController'. Это что-то, о чем я должен беспокоиться? – Roymunson

+0

@Roymunson Раскадровка, которая у вас есть в вопросе, скорее всего, устанавливает контроллер корневого окна окна как 'TabsController'. Вы можете подтвердить это, посмотрев на вкладке настроек [цели] [target] (http://imgur.com/gallery/YqxcI), где эта раскадровка установлена ​​в качестве точки входа приложения. В раскадровке 'TabsController' [установлен как' Initial View Controller'] (http://imgur.com/I14mM7Z), который затем устанавливается как контроллер корневого представления. – gravicle

0

вы могли бы попробовать это

let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex] 
Смежные вопросы