2017-05-27 139 views
0

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

我想这

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

但我有一种感觉,什么也当我回到它从另一个视图控制器运行。我需要一些能够检测到标签打开的东西,而不是当它变得可见时。

是否还有另一个func适用于此?

回答

0

有一种用于检测选项卡选择上的UITabBarController委托功能:

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

您也可以访问选定的指数是这样的:

tabController.selectedIndex 
+0

我需要在每个选项卡上添加一个还是可以将它放在AppDelegate中? – alvarlagerlof

+0

是否在应用程序委托中创建了TabBar控制器?如果是,那么你首先需要分配委托属性(tabbarController.delegate = self),然后在appdelegate中实现这个功能。每次用户切换标签时都会调用它。下面是委托协议的文档:https://developer.apple.com/reference/uikit/uitabbarcontrollerdelegate – bughana

+0

我在故事板中创建了它,所以我想我只在每个选项卡中有一个 – alvarlagerlof

1

雨燕3.0

使用这两个委托方法,并且不要忘记将委派给自己。

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

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

如果你只使用tabBar.in viewDidLoad中设定的TabBar授人以自我和

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标志代表自我

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

非常重要注意:

如果你想要要保存之前选择的tabBar,您必须将其保存在路上。根据您的意愿使用标志或NSUserDefaults。我之所以提到这个,是因为我需要检查我的项目中的View中的哪个选项卡。