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 选中按钮状态的主要内容,如果未能解决你的问题,请参考以下文章