当用户选择选项卡时,如何重置 UITabBarController 的选项卡(或选项卡控制器)?

Gau*_*ole 1 xcode uitabbarcontroller uitabbar ios swift

Swift:我有 UITabBarController,有 8 个选项卡。当用户选择任何选项卡(包括更多选项卡)时,我想通过弹出到 rootView 控制器来重置所选选项卡的内容?

这怎么可能做到呢?

我尝试用下面的方法重置导航控制器,它适用于底部可见的选项卡,但不适用于More选项卡。

tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) 

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem)
Run Code Online (Sandbox Code Playgroud)

kam*_*il3 5

一个干净的方法来做到这一点:

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    let index = tabBarController.selectedIndex
    if index == NSNotFound || index > 4 {
        tabBarController.moreNavigationController.popToRootViewController(animated: false)
        return
    }
    let navController = tabBarController.viewControllers?[tabBarController.selectedIndex] as? UINavigationController
    navController?.popToRootViewController(animated: false)
}
Run Code Online (Sandbox Code Playgroud)

为您的 UITabViewContoller 创建一个自定义类,设置一个委托并将该段代码放在那里。