【问题标题】:Select tab and change segment on the view loaded在加载的视图上选择选项卡并更改段
【发布时间】:2018-12-21 09:06:07
【问题描述】:

我希望能够以编程方式选择 UITabBarController 上的选项卡,然后访问加载的视图以设置默认加载的段。

例如,如果我有一个菜单并单击标题为“A/B”的按钮,我希望它选择“A”选项卡,然后选择“B”段。如果我单击标题为“A/C”的按钮,我希望它选择“A”选项卡,然后选择“C”段。

我设法弄清楚问题的第一部分如下:

class TabBarController: UITabBarController {
        ...
        func selectTab(name: String) {
            for tab in self.viewControllers! {
                if(name == tab.tabBarItem.title) {
                    self.selectedViewController = tab
                    return
                }
            }
        }
}

我不确定如何获得自动打开的视图。最好的方法是什么?

非常感谢!

【问题讨论】:

    标签: swift uitabbarcontroller uitabbar


    【解决方案1】:

    最后,我意识到我可以从 self.selectedViewController 获取导航控制器,然后使用 topViewController 从那里获取视图控制器。

    例如,如果我有一个名为 NavigationController 的导航控制器和一个名为 GroupsViewController 的视图控制器,我可以执行以下操作:

    func selectTab(name: String, contentType: ContentType? = nil) {
        for tab in self.viewControllers! {
            if(name == tab.tabBarItem.title) {
                self.selectedViewController = tab
                if let nc = self.selectedViewController as? NavigationController{
                    if let vc = nc.topViewController {
                        if let gvc = vc as? GroupsViewController {
                             gvc.activeContentType = contentType
                        }
                    }
                }
                return
            }
        }
    }
    

    请注意,我必须设置一个变量(ContentType 类型)以在ViewDidAppear 中使用,而不是像我最初计划的那样访问段控制(因为虽然选项卡可能存在,但视图控制器可能没有尚未加载)。

    【讨论】:

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