我已经像下面这样以编程方式创建了一个 tabBarController
let tabbarController = UITabBarController()
let homeViewController = HomeViewController()
let rewardsViewController = RewardsViewController()
let moreViewController = NewMoreViewController()
let homeNVc = UINavigationController()
homeNVc.viewControllers = [homeViewController]
let rewardsNVc = UINavigationController()
rewardsNVc.viewControllers = [rewardsViewController]
let moreNVc = UINavigationController()
moreNVc.viewControllers = [moreViewController]
tabbarController.viewControllers = [homeNVc, rewardsNVc, moreNVc]
tabbarController.tabBar.items![0].title = NSLocalizedString("Dashboard", comment: "")
tabbarController.tabBar.items![1].title = NSLocalizedString("Prämien", comment: "")
tabbarController.tabBar.items![2].title = NSLocalizedString("Mehr", comment: "")
self.window?.rootViewController = tabbarController
}
一切正常。我可以完美地在选项卡中移动,现在我的 homeViewController 中有一个 tableView。当用户点击我的 TabBarController 的第一个选项卡时,我想重新加载。即使用户已经在那个 viewController 上,我也想重新加载 tableView。
那么基本上我怎样才能检测到用户点击了第一个 ViewController ?
请指导我谢谢:-)
最佳答案
在您的 homeViewController 中,您可能需要实现此委托(delegate)方法:
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
//ask where it is first tab bar item
if self.tabBarController?.selectedIndex == 0 {
// your action, e.g.:
self.tableView.reloadData()
}
}
注意:
你需要像这样维护你的类:
一)
class YourTabBarController: UITabBarController { // inherit from UITabBarController
或者这个:
b)
class YourViewController: UIViewController, UITabBarDelegate { // set protocol
关于ios - 检测点击 UITabBarController 中的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39328594/