以编程方式获取视图控制器的实例
Posted
技术标签:
【中文标题】以编程方式获取视图控制器的实例【英文标题】:Programmatically get instance of view controller 【发布时间】:2016-07-29 03:42:37 【问题描述】:我正在使用扩展UITabBarController
的类。我需要设置班级的self.tabBarController.selectedIndex
属性才能切换选项卡。
由于我想设置此变量/调用从另一个类更改此变量的方法,因此我必须有一个名为 TabsController
的自定义类的实例
到目前为止,我已经看过这两个帖子,但它们涉及使用情节提要,而且我几乎所有事情都以编程方式完成,事实上这是我的整个情节提要:
如何以编程方式解决此问题?
Get Instance Of ViewController From AppDelegate In Swift
Access the instance of a Viewcontroller from another in swift
【问题讨论】:
【参考方案1】:UITabBarController
s 是 most often used 作为应用程序的rootViewController
。当您不使用故事板时,在应用启动后,如果您将 TabsController
的实例设置为应用的窗口 rootViewController
,则可以从应用中的任何位置引用此实例,如下所示:
if let tabsController = UIApplication.sharedApplication().delegate?.window??.rootViewController as? TabsController
tabsController.selectedIndex = 2
【讨论】:
谢谢!此代码有效。快速提问,您说如果我将TabsController
的实例设置为rootViewController
,那么我可以使用您的代码引用该实例。但是,我只是尝试了这段代码并且它有效,我没有输入任何设置rootViewController
的代码。这是我应该担心的事情吗?
@Roymunson 您在问题中的情节提要很可能是将窗口的根视图控制器设置为TabsController
。您可以通过查看您的 target's General
settings tab 来确认这一点,该故事板被设置为应用程序的入口点。在故事板中TabsController
是set as the Initial View Controller
,然后将其设置为根视图控制器。【参考方案2】:
你可以试试这个
let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex]
【讨论】:
以上是关于以编程方式获取视图控制器的实例的主要内容,如果未能解决你的问题,请参考以下文章
使用 AppDelegate 中的 Storyboard 以编程方式实例化视图控制器
使用自定义初始化程序 swift 以编程方式实例化和推送视图控制器