检测何时快速选择UITabBar项目

时间:2016-02-17 20:32:55

标签: swift xcode7

我已经通过界面构建​​器将UITabBar添加到我的应用程序,并成功将选项卡链接到其他View Controller中的Tab Bar项目,运行应用程序在它们之间切换。如何检测标签已被按下?我想在选中时在所选选项卡视图控制器类中调用一个函数。正如你可能会说我对swift很新,所以非常感谢你的解释。

我无法找到最近的答案,所有答案似乎都适用于非swift或非常旧版本的xcode。

1 个答案:

答案 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,你就可以了。