如何将标签栏项目连接到操作?
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您不能为标签栏项目设置目标操作。他们应该总是有新的看法。唯一的方法是 - 您应该使用确定您的标签栏项目被触摸的委托,然后处理在该委托中按下了哪个标签。
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
if(item.tag == 1)
你应该从 xcode 的属性中为你的标签栏项目设置一个标签值。
【讨论】:
嗨!如果想要在 TabBar 项上识别“触地”动作(而不是“选定”动作)怎么办?那要怎么做呢?以上是关于如何将标签栏项目连接到操作?的主要内容,如果未能解决你的问题,请参考以下文章