以编程方式获取视图控制器的实例

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】:

UITabBarControllers 是 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 以编程方式实例化和推送视图控制器

MonoTouch 以编程方式为 ContainerView 实例化 ViewController

如何以编程方式快速使用情节提要 ID 获取当前视图控制器(当前正在呈现)?