ios 未调用DidSelect TabBar项

zazmityj  于 2023-03-14  发布在  iOS
关注(0)|答案(3)|浏览(141)

因此,我有一个UITabBarController,其中嵌入了两个视图控制器。我实现了do select选项卡栏方法,当用户选择一个选项卡时,它将一个值传递给该控制器。但是,当tabBarController第一次加载时,没有调用do select方法,即使我已经

self.selectedIndex = 0

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

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

pod7payv1#

问题与此问题类似。tabBarController didSelect does not get called

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

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

nwlqm0z1

nwlqm0z12#

在viewDidLoad中添加以下内容:

self.delegate = self
6ju8rftf

6ju8rftf3#

将其复制到代码中

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?

相关问题