如何将标签栏项目连接到操作?

Posted

技术标签:

【中文标题】如何将标签栏项目连接到操作?【英文标题】:How do you connect a tab bar item to an action? 【发布时间】:2011-07-31 19:53:44 【问题描述】:

我有一个 UIView,它有一个 UITabBar,里面有 4 个 UITabBarItem 组件(都是从 IB 创建的)。

我希望当有人点击标签栏中的项目时调用我的 IBAction 函数。但是我无法通过 IB 将 tabbaritem 连接到我的操作...我控制“接收到的操作”中的拖动,但它不允许我将其连接到 tabbaritem。

谢谢 德肖恩

【问题讨论】:

【参考方案1】:

控制将您的标签栏拖到 IB 中的“文件所有者”并将其设置为委托。接下来将此代码放入您的 viewcontroller.m 文件中:

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

    if(item.tag == 0)
    
        //party like its 1999 right here
    

返回 IB 并为标签栏中的每个标签栏项目设置一个标签。你必须在你的 didSelectItem 中测试每个案例,所以如果你有多个设置不同的标签等。无论如何我就是这样做的。

【讨论】:

这听起来对我来说是最有希望的线索,但是你说的这个“文件的所有者”到底在哪里?我在任何地方都没有看到它。【参考方案2】:

如果您还定义了一个 UITabBarController。

如果您没有(我假设,否则如果您在 IB 中正确定义了内容,则单击标签栏项目应该可以工作),要走的路是将 UITabBarDelegate 分配给您的 UITabBar 并定义 tabBar:didSelectItem:

看看reference for UITabBarDelegate

【讨论】:

嗨...我的界面看起来像这样:@interface MapViewController : UIViewController 【参考方案3】:

您不能为标签栏项目设置目标操作。他们应该总是有新的看法。唯一的方法是 - 您应该使用确定您的标签栏项目被触摸的委托,然后处理在该委托中按下了哪个标签。

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

    if(item.tag == 1)
    
    

你应该从 xcode 的属性中为你的标签栏项目设置一个标签值。

【讨论】:

嗨!如果想要在 TabBar 项上识别“触地”动作(而不是“选定”动作)怎么办?那要怎么做呢?

以上是关于如何将标签栏项目连接到操作?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在整个项目中保持标签栏显示

登录后的标签栏 - 为啥它看起来像这样?

如何以编程方式更改初始标签栏选择

标签栏/导航刷新

如何使用 swift 在子视图中添加标签栏和导航栏?

增加标签栏项目之一的高度