从另一个视图控制器更改标签栏选定项目

时间:2018-01-22 07:40:54

标签: ios swift uitabbarcontroller uitabbaritem

我是Swift的新用户(使用4个版本),我想从另一个视图控制器(不是标签栏控制器)更改标签栏项目。

这是我的计划: scheme

来自didSelectRow的RouterViewController(用于侧面菜单导航)我这样做:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let mainViewController = sideMenuController!

    let tabBarController : TabBarController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "TabBarController") as! TabBarController

    tabBarController.selectedIndex = indexPath.row
}

它没有抛出任何异常和调试节目,让tabBarController不为null,但由于某种原因它没有更改标签。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

self.tabBarController.selectedIndex = 1;
self.tabBarController setSelectedIndex:1];

self.tabBarController.selectedViewController = yourViewController;
self.tabBarController setSelectedViewController:yourViewController];

答案 1 :(得分:0)

您可以在appDelegate中定义此变量:

var window: UIWindow?
let tabViewController = self.window!.rootViewController as! UITabBarController

现在,您可以在所有代码中使用tabViewController变量并调用此方法,例如更改页面的方法。 对于UITableViewController的所有方法/变量,请参阅此链接中的文档:

https://developer.apple.com/documentation/uikit/uitabbarcontroller

我认为更改变量“var selectedIndex:Int”将解决您的问题。