UIToolBar 选中按钮状态

Posted

技术标签:

【中文标题】UIToolBar 选中按钮状态【英文标题】:UIToolBar selected button state 【发布时间】:2011-03-18 14:35:54 【问题描述】:

我有一个底部带有工具栏的 UItableView。工具栏有两个按钮,分别是“水果”、“蔬菜”。单击它们将仅显示相应的类别。

我已经设法让显示功能正常工作,但我不知道如何在选择时将按钮设置为 selectedState。

我创建了如下所示的工具栏

UIBarButtonItem *fruits = [[UIBarButtonItem alloc] initWithTitle:@"Fruits" style:UIBarButtonItemStyleBordered target:self action:@selector(fruitsClicked:)];
UIBarButtonItem *vegetables = [[UIBarButtonItem alloc] initWithTitle:@"Vegetables" style:UIBarButtonItemStyleBordered target:self action:@selector(vegetablesClicked:)];
NSArray *items = [NSArray arrayWithObjects: fruits,vegetables,nil];
[fruits release];
[vegetables release];
[self setToolBarItems:items];

和像

这样的选择器
-(void)fruitsClicked:(id)sender
     //code here

由于我之前释放按钮,我无法设置

fruits.enabled=NO;

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我认为添加单独的按钮不是一个好的设计和策略,你应该使用 UISegmentad 控件,它是你想要的组件设计:在 X 中选择一个段。

您可以这样使用它(例如选择第一项):

UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:array];
[segment setSelectedSegmentIndex:0];

并获取选中的项目:

segment.selectedSegmentIndex

【讨论】:

如何将 UISegementedControl 添加到工具栏? [toolBar setItems:[NSArray arrayWithObjects:segment, nil]]; 对不起,我在某个地方把你弄丢了。你能告诉我如何创建数组吗?是不是像NSArray *items=[NSArray arrayWithObjects:@"fruits",@"vegetables"]; 如果是这样我如何设置选择器方法? @Narayanan:您可以将 UISegmentedControl 从 XIB 拖放到工具栏上。【参考方案2】:

传递给您的fruitClicked 处理程序的sender 参数将是一个指向UIBarButtonItem 的指针。你可以像这样投射它:

[((UIBarButtonItem*)sender) setEnabled:NO];

但是,一旦按钮被禁用,它就不再接受点击(即您无法再次点击它以重新启用它)。我会为按钮使用 customView 并自己实现启用/禁用外观。

【讨论】:

如果你真的只是想实现一组按钮,但每次只选择一个,你应该遵循 Ludovic 的建议并使用 UISegmentedControl。 是的..同意。如何将分段控件添加到工具栏。?【参考方案3】:

我对 UIToolBars 没有任何经验,但据我所知,选择器获取了发送者的 ID,对吧?您可以使用它来访问单击的按钮,然后将其设置为选中状态。

【讨论】:

无法从 UIBarButtonItem 访问标准 UIButton,因此也无法select 它。

以上是关于UIToolBar 选中按钮状态的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 UIToolbar 灵活空间项点击

如何使用包含彩色图像的按钮自定义 UIToolbar?

UIToolbar - 添加等宽按钮没有间隙

我可以向 UIToolbar 添加彩色按钮吗?

如何为 UIToolbar 上的按钮添加滚动?

UIToolbar 中的 UISearchBar 不会显示取消按钮