2017-05-27 8 views
0

タブバーのタブが変更されたことを知りたいので、Firebase Analyticsに報告することができます。どのように私はこれを行うのですか? タブバーのiOSを変更する

私はこの

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

を試してみましたが、私は別のViewControllerからそれに戻って行くときにも、何を実行するだろうと感じています。タブが開いたときに検出できるものが必要です。

これに対応する別の機能がありますか?

tabController.selectedIndex 

答えて

0

タブが選択されたことを検出するためのUITabbarControllerのデリゲート機能がありますこの2つのデリゲートメソッドは、デリゲートを自分自身に割り当てることを忘れないでください。

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

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

各タブに1つずつ追加する必要がありますか、それともAppDelegateに入れることはできますか? – alvarlagerlof

+0

あなたのタブバーコントローラは、アプリケーションの代理人で作成されていますか?はいの場合は、最初にデリゲートプロパティ(tabbarController.delegate = self)を割り当ててからappdelegateでこの関数を実装する必要があります。ユーザーがタブを切り替えるたびに呼び出されます。ここにデリゲートプロトコルのドキュメントがあります:https://developer.apple.com/reference/uikit/uitabbarcontrollerdelegate – bughana

+0

私は私のストーリーボードで作ったので、私は推測しますが、各タブに1つあります。 – alvarlagerlof

1

スウィフト3.0

用途:

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

あなたはまた、次のように選択されたインデックスにアクセスすることができます。

0

だけ使用した場合tabBar.inのviewDidLoadが自己にタブバーのデリゲートを設定し、

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

、あなたがtabBarControllerを使用する場合

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

自己としてこのmethod.Andマークデリゲートを使用します非常に重要です注:

どのtabBarが以前に選択されたかを保存するには、希望どおりにフラグやNSUserDefaultを使用してください。理由は私は私が私のプロジェクトの1つでビューで今すぐ選択されているタブをチェックする必要があったため、これを述べた理由。

関連する問題