我通过界面构建器向我的应用程序添加了一个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,您就可以开始使用了.
| 归档时间: |
|
| 查看次数: |
7154 次 |
| 最近记录: |