我已經通過界面構建器將UITabBar添加到我的應用程序,併成功將選項卡鏈接到其他視圖控制器中的選項卡欄項目,並很好地運行它們之間的應用程序切換。我將如何去檢測一個標籤被按下?我想在選中時在選定的選項卡視圖控制器類中調用一個函數。正如你可能會告訴我,我很新,所以解釋非常感謝。當UITabBar項目選擇swift時檢測到
我無法找到最近的答案,所有答案似乎是非快速或非常舊版本的xcode。
我已經通過界面構建器將UITabBar添加到我的應用程序,併成功將選項卡鏈接到其他視圖控制器中的選項卡欄項目,並很好地運行它們之間的應用程序切換。我將如何去檢測一個標籤被按下?我想在選中時在選定的選項卡視圖控制器類中調用一個函數。正如你可能會告訴我,我很新,所以解釋非常感謝。當UITabBar項目選擇swift時檢測到
我無法找到最近的答案,所有答案似乎是非快速或非常舊版本的xcode。
你不希望你的視圖控制器的基類是一個UITabBarDelegate。如果你這樣做,你所有的視圖控制器子類將是標籤欄代表。我想你想要做的是延長的UITabBarController,這樣的事情:
class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
然後,在這個類,覆蓋viewDidLoad中並在那裏設置委託財產自我:
self.delegate = self
注意:這是設置標籤欄控制器委託。標籤欄有它自己的委託(UITabBarDelegate),標籤欄控制器管理它,並且不允許更改。
所以,現在這個類既是UITabBarDelegate(因爲的UITabBarController實現該協議),並UITabBarControllerDelegate,你可以重寫/根據需要實現這些委託的方法,如:
// UITabBarDelegate
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
print("Selected item")
}
// UITabBarControllerDelegate
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
print("Selected view controller")
}
我猜你可能對後者更感興趣。查看文檔以查看每個代表提供的內容。
最後,在您的故事板(假設您正在使用故事板)中,將標籤欄控制器的類設置爲Identity Inspector中的MyTabBarController,並且您很好。
有一個名爲didSelectItem的委託方法,當你點擊任何標籤項時它會被調用。 –
我已經儘可能將UITabBarDelegate添加到包含其中一個選項卡項目的視圖控制器的類行,但我不確定下一步是什麼? – burg93
你必須在tabbarcontroller中做到這一點。 –