动态按钮选择

时间:2011-07-12 18:37:57

标签: objective-c ios uibutton

假设我有两个按钮是ivar插座。一个叫做“蓝色”,另一个叫“红色”。现在,我有一个值为“红色”的NSString。我想将NSString标识的按钮设置为selected状态,而不使用if

想要这样做:

NSString *button=@"Red";
if ([button isEqualtoString:@"Blue")
   self.blue.selected=YES; //self.blue and self.red are UIButtons
else
   self.red.selected=YES;

如果你有两个按钮,这很好,但我有更多的按钮,对于30个按钮这样做会非常不优雅和麻烦。

我更愿意找到一种方法将UIButton ivar的名称直接链接到NSString的值。

2 个答案:

答案 0 :(得分:6)

把字符串小写和 您可以使用KVC

[self setValue:[NSNumber numberWithBool:YES]
    forKeyPath:[NSString stringWithFormat:@"%@.selected", button]];

答案 1 :(得分:3)

您可以将按钮放在字典中:

[NSDictionaryName addObject: UIButtonName forKey: @"blue"];

或类似的东西:

[NSDictionaryName objectForKey:@"blue"].selected = YES;