我是Swift的新用户(使用4个版本),我想从另一个视图控制器(不是标签栏控制器)更改标签栏项目。
这是我的计划:
来自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,但由于某种原因它没有更改标签。
我做错了什么?
答案 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”将解决您的问题。