gpt4 book ai didi

swift - 检测 UITabBar 项目何时选择 swift

转载 作者:搜寻专家 更新时间:2023-10-31 21:57:30 25 4
gpt4 key购买 nike

我已经通过界面生成器向我的应用程序添加了一个 UITabBar,并成功地将选项卡链接到其他 View Controller 中的选项卡栏项目,运行应用程序可以在它们之间正常切换。我将如何去检测一个选项卡是否被按下?选择时,我想在选定的选项卡 View Controller 类中调用一个函数。正如您可能会说的那样,我对 swift 还很陌生,所以非常感谢您的解释。

我找不到最近的答案,所有答案似乎都是针对非 swift 或非常旧版本的 xcode。

最佳答案

您不希望 View Controller 的基类是 UITabBarDelegate。如果你这样做,你所有的 View Controller 子类都将是标签栏委托(delegate)。我认为您想做的是扩展 UITabBarController,如下所示:

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {

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

self.delegate = self

注意:这是设置标签栏 Controller 委托(delegate)。标签栏有它自己的委托(delegate) (UITabBarDelegate),由标签栏 Controller 管理,您不能更改。

所以,现在这个类既是 UITabBarDelegate(因为 UITabBarController 实现了该协议(protocol)),又是 UITabBarControllerDelegate,您可以根据需要覆盖/实现这些委托(delegate)的方法,例如:

// UITabBarDelegate
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
print("Selected item")
}

// UITabBarControllerDelegate
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
print("Selected view controller")
}

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

最后,在您的 Storyboard中(假设您使用的是 Storyboard),在 Identity Inspector 中将标签栏 Controller 的类设置为 MyTabBarController,一切顺利。

关于swift - 检测 UITabBar 项目何时选择 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35467140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com