【问题标题】:Swift UITabBarItem as a UIButtonSwift UITabBarItem 作为 UIButton
【发布时间】:2015-08-17 11:31:25
【问题描述】:

我尝试实现UITabBar,但现在我无法在选择项目时从方法中检索回调。因此,是否有可能只创建一个@IBAction func?还是我需要做其他事情?

【问题讨论】:

标签: ios swift uikit uitabbar uitabbaritem


【解决方案1】:

为了实现 UITabBar 按钮,您的视图控制器应符合 UITabBarDelegate 协议。你需要实现:

斯威夫特:

func tabBar(_ tabBar: UITabBar, didSelectItem item: UITabBarItem!)

目标-c:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

您还需要在 ViewController 的 viewDidLoad 中设置委托 (tabBar.delegate = self)

编辑:Swift 3 答案:

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

}

【讨论】:

    【解决方案2】:

    您的视图控制器应符合UITabBarDelegate 并实现:

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
    

    当用户选择一个选项卡(即UITabBarItem)时调用此方法。

    【讨论】:

    • 我是否必须在代码中显式调用此方法,或者当我将其实现到 UITabBarDelegate 中时会自动调用它吗?
    • UITabBar 会在用户选择标签时将此消息发送给它的代理。
    • class MyClass: UITabBarItem, UITabBarDelegate { class MyClass: UITabBar, UITabBarControllerDelegate, UITabBarDelegate { 这些实现中哪些是正确的?这个编码也是正确的:func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 仅供参考,我断开了默认类并连接到新的自定义类,但它仍然无法正常工作(在main.storyboard)。
    • 你为什么要继承 UITabBarItem?
    • 标签栏项目不应该是它所在的标签栏的代表。您可能正在将自己写入保留循环。
    【解决方案3】:

    我终于解决了这个问题。我在 Delegator 类和普通类中遇到了一些麻烦。 这解决了我的问题:主控制器类中的tabBar.delegate = self

    【讨论】:

      最近更新 更多