【问题标题】: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

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案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 来确认这一点,该故事板被设置为应用程序的入口点。在故事板中TabsControllerset as the Initial View Controller,然后将其设置为根视图控制器。
    【解决方案2】:

    你可以试试这个

    let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多