我已经通过界面构建器将UITabBar添加到我的应用程序,并成功将选项卡链接到其他View Controller中的Tab Bar项目,运行应用程序在它们之间切换。如何检测标签已被按下?我想在选中时在所选选项卡视图控制器类中调用一个函数。正如你可能会说我对swift很新,所以非常感谢你的解释。
我无法找到最近的答案,所有答案似乎都适用于非swift或非常旧版本的xcode。
答案 0 :(得分:9)
您不希望视图控制器的基类成为UITabBarDelegate。如果您这样做,所有视图控制器子类都将是标签栏代理。我认为你想要做的是扩展UITabBarController,如下所示:
class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
然后,在该类中,覆盖viewDidLoad并在其中将委托属性设置为self:
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,你就可以了。