检测UITabBarController中选项卡上的点击

Byt*_*yte 3 uitabbarcontroller uitabbar ios swift

我已经以编程方式创建了一个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
}
Run Code Online (Sandbox Code Playgroud)

everyThing正在运作.我可以完全切换标签,现在我在homeViewController中有ta tableView.当用户点击我的TabBarController的第一个标签时,我想重新加载.即使用户已经在viewController上,我想重新加载tableView.

那么基本上如何检测用户点击第一个ViewController?

请指导我谢谢:-)

ped*_*uan 6

homeViewController中,您可能需要实现此委托方法:

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()
    }

}
Run Code Online (Sandbox Code Playgroud)

注意:

您需要像这样维护您的课程:

一个)

class YourTabBarController: UITabBarController { // inherit from UITabBarController
Run Code Online (Sandbox Code Playgroud)

或这个:

b)

class YourViewController: UIViewController, UITabBarDelegate { // set protocol
Run Code Online (Sandbox Code Playgroud)