以编程方式获取视图控制器的实例
问题描述:
我使用的类扩展为UITabBarController
。我需要设置我的课程的self.tabBarController.selectedIndex
属性才能切换选项卡。以编程方式获取视图控制器的实例
因为我要设置这个变量/调用从另一个类改变这个变量的方法,我必须有我的自定义类的实例,它被称为TabsController
到目前为止,我已经看过这两个职位,但他们涉及使用故事板,我做的编程几乎所有,事实上这是我的整个故事板:
如何编程解决这个问题呢?
Get Instance Of ViewController From AppDelegate In Swift
Access the instance of a Viewcontroller from another in swift
答
UITabBarController
s为most often used作为应用程序的rootViewController
。当你不使用故事板,应用程序启动后,如果您设置的TabsController
的实例作为应用程序的窗口的rootViewController
,你可以参考这种情况下从任何地方在您的应用程序,像这样:
if let tabsController = UIApplication.sharedApplication().delegate?.window??.rootViewController as? TabsController {
tabsController.selectedIndex = 2
}
答
你可以试试这个
let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex]
谢谢!此代码有效。快速的问题,你说如果我把'TabsController'的实例设置为'rootViewController',那么我可以通过使用你的代码来引用那个实例。然而,我只是试了这个代码,它工作,我没有输入任何设置'rootViewController'的代码。这是我应该担心的事吗? – Roymunson
@Roymunson您在问题中的故事板很可能是将窗口的根视图控制器设置为“TabsController”。您可以通过查看您的[目标的'常规'设置选项卡](http://imgur.com/gallery/YqxcI)“,其中故事板被设置为应用程序的入口点来确认。在故事板“TabsController”中[设置为'Initial View Controller'](http://imgur.com/I14mM7Z),然后将其设置为根视图控制器。 – gravicle