DidSelect TabBar项目没有被调用

时间:2019-11-07 02:08:10

标签: ios swift xcode

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

ListView

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

ObservableCollection.Move

2 个答案:

答案 0 :(得分:0)

  

将此复制到您的代码中

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?

答案 1 :(得分:0)

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

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

在iOS v3.0和更高版本中,选项卡栏控制器调用此方法,而不管所选视图控制器是否更改。此外,仅当用户点击选项卡栏时才调用它,而当您的代码以编程方式更改选项卡栏内容时,则不会调用该