如果标签栏控制器位于另一个 ui 控制器中,如何以编程方式切换标签? -迅速
Posted
技术标签:
【中文标题】如果标签栏控制器位于另一个 ui 控制器中,如何以编程方式切换标签? -迅速【英文标题】:how to switch tab programmatically if tab bar controller is inside another ui controller? -Swift 【发布时间】:2015-05-13 05:18:47 【问题描述】:您好,我是 ios 开发新手,尤其是 swift。基本上我只需要切换tab,我试过tabBarController?.selectedIndex = 1
,但似乎没有切换tab。
上图是我的故事板,初始设置是我有 splitview 控制器,主视图上的初始视图是tableViewController
,即A
,点击附件时单元格的细节是 detail of A
出现在 splitview 的细节上以及当点击行本身
将Tab Bar Controller
替换为master
然后我的 tabBarController Tab B
、Tab C
、Tab D
和 Tab E
中有四个选项卡,这只是一个列表,当点击它时,它会将其各自的视图控制器显示为 splitview 的详细信息,然后在我的 tab E
我有 3 个按钮,每个按钮用于切换标签
注意:标签和详细信息嵌入在导航控制器中
我对这个标准如何以及标准是什么有点困惑。 任何人都可以帮助我任何评论,建议。
【问题讨论】:
【参考方案1】:原因
tabBarController?.selectedIndex = 1
不工作,tabBarController 是 nil。
为了获得正确的 tabBarController,你必须从 window 对象的根目录中获得它。 像这样的,
var tabBarController: UITabBarController = self.window?.rootViewController as? UITabBarController tabBarController.selectedIndex = 1由于您可能必须在导航堆栈中找到正确的 tabBarController,因此您还必须遍历堆栈。 从上面的情节提要中,我相信您正在从 Tableview didSelect 加载 tabbarController,因此您必须在那里获取 tabBarController 并在那里选择 tabbar 索引。
希望对你有帮助。
【讨论】:
我的 rootviewcontroller 是 tableview A 所以我需要先去那里切换选项卡? 是正确的,当你将tabbarcontroller添加到rootviewcontroller时,你需要切换tab。这个 tabbarcontroller 是从 tableview A 启动的 我有点失落,我需要先去根控制器(tableview A)然后开始点击它的一个单元格以便显示标签栏,然后切换标签?对不起,我不知道该怎么办。 我相信您正在根据用户选择的 tableview 行启动带有选定索引的标签栏,对吧? 还有一点,tabbarcontroller 应该在你展示的时候添加到 window rootviewcontroller 中,而不是作为子视图【参考方案2】:在标签栏控制器的身份检查器中,我为情节提要 ID“tabBarController”添加了一个名称。在我的操作中,我添加实例化视图控制器并强制转换 UITabbarController。您将能够切换到您选择的标签栏。希望这会有所帮助
@IBAction func buttonTapped(_ sender: Any)
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController
vc.selectedIndex = 0
self.present(vc, animated: true, completion: nil)
【讨论】:
【参考方案3】:在您的 AppDelegate.swift 中添加:var tabBarController: UITabBarController?
然后你可以放入另一个控制器self.tabBarController!.selectedIndex = 0
为我工作
【讨论】:
以上是关于如果标签栏控制器位于另一个 ui 控制器中,如何以编程方式切换标签? -迅速的主要内容,如果未能解决你的问题,请参考以下文章