2011-03-18 50 views
1

我有一个UItableView与底部的工具栏。工具栏上有两个按钮,分别表示'水果'和'蔬菜'。点击它们将只显示相应的类别。UIToolBar选择的按钮状态

我已经设法使显示功能工作,但我不知道如何在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; 

任何帮助将不胜感激。

回答

2

我想添加单独的按钮做的,是不是一个很好的设计和战略,你应该使用UISegmentad控制,是一个组件设计你想要的东西:有十中选择一个段

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

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

并获得所选择的项目:

segment.selectedSegmentIndex 
+0

如何将UISegementedControl添加到工具栏? – Neelesh 2011-03-18 15:21:15

+1

[toolBar setItems:[NSArray arrayWithObjects:segment,nil]]; – 2011-03-18 15:36:01

+0

对不起。我失去了你的某个地方。 你能告诉我如何创建阵列。 是不是像 'NSArray * items = [NSArray arrayWithObjects:@“fruits”,@“vegetables”];' 如果是这样,我该如何设置选择器的方法? – Neelesh 2011-03-18 15:49:09

-1

我没有与任何UIToolBars经验,但从我看到的,选择器获取发件人的ID,对吧?您可以使用它来访问点击的按钮,然后将其设置为选中状态。

+0

无法从UIBarButtonItem访问标准UIButton,因此无法“选择”它。 – hop 2014-06-17 15:08:16

0

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

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

然而,一旦该按钮是禁用它不再接受抽头(即你不能再次点击它来重新启用它)。我将使用customView作为按钮并自己实现启用/禁用外观。

+3

如果您确实只想实现一组按钮,但一次只能选择一组按钮,则应遵循Ludovic的建议并使用UISegmentedControl。 – 2011-03-18 15:11:41

+0

是..同意。我如何将分段控件添加到工具栏? – Neelesh 2011-03-18 15:33:18