2017-05-27 140 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中的哪個選項卡。