为简单起见,我将我的 viewControllers 引用为 VC1、VC2...
我有一个 TabBarController
作为我的根 viewController
。它包含 3 个选项卡,每个选项卡包含一个 UITableViewController
。所以我在 TabBarController
的索引 0 处有 VC1,在索引 1 处有 VC2,在索引 1 处有 VC3 和索引 2。现在我想检测用户何时点击 TabBarController
的索引 0 以转到VC1。我已经尝试使用 UITabBarDelegate
如下。
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if self.tabBarController?.selectedIndex == 0 {
// do something
}
}
当我从 VC1 转到 VC2 并从 VC2 返回 VC1 时,它确实有效。但是,如果我从 VC1 转到 VC3,然后再回到 VC1,它就不起作用了。有人可以解释为什么吗?
我真正想要实现的是用户从 VC2 或 VC1 转到 VC3。现在用户点击一个 tableViewCell 进入 VC4。现在,每当用户回到 VC1 时,我都想调用一个 webService。
最佳答案
不是测试 tabcontroller selectedIndex,而是自己计算选定的索引:
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
let selectedIndex = tabBarController.viewControllers.index(of: viewcontroller)!
if selectedIndex == 0 {
// do something
}
关于ios - 检测标签栏项目选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779612/