iOS 标签栏更改

iOS on tab bar change

我想知道标签栏中的标签何时更改,以便我可以将其报告给 Firebase Analytics。我该怎么做呢。

我试过了

override func viewDidAppear(_ animated: Bool) {
    Analytics.logEvent("projects_open", parameters: [:])
}

但我有一种感觉,当我从另一个 ViewController 回到它时,也会 运行。我需要一些可以检测标签何时打开,而不是何时可见的东西。

是否有其他功能适用于此?

UITabbarController 上有一个委托函数用于检测选项卡是否被选中:

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

您还可以像这样访问选定的索引:

tabController.selectedIndex

Swift 3.0

使用这两个委托方法,不要忘记将委托分配给自己。

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    //MARK: - UITabBarControllerDelegate
}

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
   //MARk: - UITabBarDelegate
}

如果你只使用 tabBar.in viewDidLoad 将 tabBar 委托设置为 self 和

override func tabBar(_ tabBar: UITabBar, didSelect item:UITabBarItem) 
{
       //MARk: - UITabBarDelegate
if(tabBar.selectedIndex == 0) {
 //Do something
}
else if(tabBar.selectedIndex == 1) {
 //Do something.
} 
}

如果您使用 tabBarController,请使用此 method.And 将委托标记为 self

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

非常重要注意事项:

如果您想保存之前选择的 tabBar,您必须根据您的意愿将其保存在 way.Either 使用标志或 NSUserDefaults 上。我提到这个的原因是因为我需要在我的一个项目的视图中检查现在选择了哪个选项卡。

Swift 5

只需单击 link Whosebug 屏幕即可打开