为简单起见,我将把我的viewControllers改为VC1,VC2 ......
我的TabBarController
作为我的根viewController
。它包含3个选项卡,每个选项卡包含UITableViewController
。所以我在TabBarController
的索引0处有VC1,索引1处的VC2和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。现在用户点击了一个带有VC4的tableViewCell。现在每当用户回到VC1我都想调用webService。
答案 0 :(得分:1)
而不是测试tabcontroller selectedIndex,自己计算所选索引:
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
let selectedIndex = tabBarController.viewControllers.index(of: viewcontroller)!
if selectedIndex == 0 {
// do something
}
}
答案 1 :(得分:0)
您需要将此delegate
方法用于UITabBarController
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
}
只要您在TabBar
上选择任何项目,就会调用此方法答案 2 :(得分:-1)
如果我理解正确你可以尝试以下;首先尝试检查视图控制器,如下所示
if ([instance1 isKindOfClass:[CustomUIViewController class]]) {
// then call web service.
}
希望这能解决问题。