2017-05-27 2 views
0

Ich möchte wissen, wenn die Registerkarte in der Tab-Leiste ändert, so dass ich es an Firebase Analytics melden kann. Wie mache ich das.iOS auf Tab-Leiste ändern

ich versuchte, diesen

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

Aber ich habe das Gefühl, dass das, was laufen würde auch, wenn ich von einem anderen Viewcontroller, um es zurückgehen. Ich brauche etwas, das erkennen kann, wenn ein Tab geöffnet wird, nicht wenn es sichtbar wird.

Gibt es eine andere Funktion, die dafür funktioniert?

Antwort

0

Es gibt eine Delegatfunktion auf UITabBarController zum Erfassen, dass eine Registerkarte ausgewählt wurde: Swift

tabController.selectedIndex 
+0

Muss ich auf jeder Registerkarte eine hinzufügen oder kann ich sie in die AppDelegate einfügen? – alvarlagerlof

+0

Ist Ihr Tab-Controller im App-Delegaten erstellt? Wenn ja, müssen Sie zunächst die Eigenschaft delegate (tabbarController.delegate = self) zuweisen und diese Funktion dann in appdelegate implementieren. Es wird jedes Mal aufgerufen, wenn der Benutzer Tabs wechselt. Hier ist die Dokumentation für das Delegate-Protokoll: https://developer.apple.com/reference/uikit/uitabbarcontrollerdelegate – bughana

+0

Ich habe es in meinem Storyboard, also ich denke, ich aber eine in jeder Registerkarte – alvarlagerlof

1

3,0

Verwendung:

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

Sie auch den gewählten Index wie folgt zugreifen können diese zwei Delegate-Methoden, und vergessen Sie nicht, delegate zu self zuzuweisen.

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

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

Wenn Sie nur tabBar.in viewDidLoad gesetzt tabBar Delegierten selbst und

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

und wenn Sie verwenden TabBarController diese Delegierten method.And Zeichen verwenden als selbst

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

Sehr wichtig Hinweis:

Wenn Sie möchten Um zu speichern, welche TabBar zuvor ausgewählt wurde, müssen Sie sie auf Ihrem Weg speichern. Verwenden Sie entweder Flag oder NSUserDefaults nach Ihrem Wunsch. Der Grund, warum ich das erwähnte, weil ich überprüfen musste, welcher Tab in einem meiner Projekte gerade in View ausgewählt wurde.

Verwandte Themen