2016-07-29 70 views
1

我使用的类扩展为UITabBarController。我需要设置我的课程的self.tabBarController.selectedIndex属性才能切换选项卡。以编程方式获取视图控制器的实例

因为我要设置这个变量/调用从另一个类改变这个变量的方法,我必须有我的自定义类的实例,它被称为TabsController

到目前为止,我已经看过这两个职位,但他们涉及使用故事板,我做的编程几乎所有,事实上这是我的整个故事板:

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”。您可以通过查看您的[目标的'常规'设置选项卡](http://imgur.com/gallery/YqxcI)“,其中故事板被设置为应用程序的入口点来确认。在故事板“TabsController”中[设置为'Initial View Controller'](http://imgur.com/I14mM7Z),然后将其设置为根视图控制器。 – gravicle

0

你可以试试这个

let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex] 
相关问题