簡體   English   中英

標簽欄上的iOS更改

[英]iOS on tab bar change

我想知道標簽欄中的標簽何時發生變化,以便我可以將其報告給 Firebase Analytics。 我該怎么做呢。

我試過這個

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

但是我有一種感覺,當我從另一個 ViewController 返回它時也會運行什么。 我需要一些可以檢測標簽何時打開而不是何時可見的東西。

是否有另一個功能適用於此?

斯威夫特 3.0

使用這兩個委托方法,不要忘記將委托分配給self。

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

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

UITabbarController 上有一個委托函數用於檢測選項卡是否被選中:

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

您還可以像這樣訪問選定的索引:

tabController.selectedIndex

如果您僅使用 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 使用此方法。並將委托標記為 self

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

非常重要的注意事項:

如果您想保存之前選擇的 tabBar,您必須按自己的方式保存它。根據您的意願使用標志或 NSUserDefaults。 我之所以提到這一點,是因為我需要檢查現在在我的一個項目中的 View 中選擇了哪個選項卡。

斯威夫特 5

簡單的方法只需單擊鏈接 StakOverFlow 屏幕將打開https://stackoverflow.com/a/60539396/6881070

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM