检测何时快速选择UITabBar项目

bur*_*g93 3 swift xcode7

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

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

Tom*_*adi 10

您不希望视图控制器的基类成为UITabBarDelegate.如果您这样做,所有视图控制器子类都将是标签栏代理.我认为你想要做的是扩展UITabBarController,如下所示:

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {
Run Code Online (Sandbox Code Playgroud)

然后,在该类中,覆盖viewDidLoad并在其中将委托属性设置为self:

self.delegate = self
Run Code Online (Sandbox Code Playgroud)

注意:这是设置标签栏控制器委托.标签栏有自己的委托(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")
}
Run Code Online (Sandbox Code Playgroud)

我猜你可能对后者更感兴趣.查看文档以了解每个代表提供的内容.

最后,在您的故事板中(假设您使用的是故事板),在Identity Inspector中将标签栏控制器的类设置为MyTabBarController,您就可以开始使用了.