DidSelect选项卡栏项未被调用



所以我有一个UITabBarController,其中嵌入了两个视图控制器。我实现了did-select选项卡栏方法,当用户选择一个选项卡时,它会将一个值传递给该控制器。然而,当tabBarController第一次加载时,即使我有,也不会调用did-select方法

self.selectedIndex = 0

它选择第一个索引。基本上,我只是试图在加载视图时自动选择第一个选项卡栏项,并让它调用didSelectTabBarItem方法

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
}

问题与此类似。tabBarController didSelect未被调用

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

在iOS v3.0及更高版本中,无论所选视图控制器是否更改,选项卡栏控制器都会调用此方法。此外,它仅在响应用户在选项卡栏中的点击时调用,而在代码以编程方式更改选项卡栏内容时不调用。

在viewDidLoad中添加以下内容:

self.delegate = self

将其复制到您的代码中

class HomeTabBarVC: UITabBarController {
var isIpad = false
let button = UIButton.init(type: .custom)
var index = 0
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self

APPDELEGATE.tabBar = self 
}
}
extension HomeTabBarVC : UITabBarControllerDelegate {
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("the last selected index is : (selectedIndex)")
APPDELEGATE.tabBarLastSelectedIndex = selectedIndex 
print("the current selected index is : (String(describing: tabBar.items?.index(of: item)))")
APPDELEGATE.tabBarCurrentSelectedIndex = tabBar.items?.index(of: item) ?? 0
}
}

在appdelegate中声明这个变量,

var tabBar : UITabBarController?

最新更新