2011-07-12 104 views
0

假設我有兩個按鈕是伊娃的插座。一個叫做「藍色」,另一個叫「紅色」。現在,我有一個NSString,其值爲「Red」。我想將由NSString標識的按鈕設置爲selected狀態,而不使用if動態按鈕選擇

我做要做到這一點:

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

這是好的,如果你有兩個按鈕,但我有相當多的多的是,而且這將是非常不雅和繁瑣做這就像30個按鈕。

我寧願找一種方法直接鏈接UIButton伊娃的名稱與NSString的值。

回答

6

把字符串小寫 您可以使用KVC爲:

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

太棒了! –

+0

你如何具體表明它是被設置爲YES的按鈕的'selected'屬性? – johnbakers

+0

@andrewjs:這就是他的關鍵路徑中的'.selected'指示的。 – Chuck

3

你可以把按鈕放在字典:

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

或類似的東西:

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

你實際上想要使用正常的消息傳遞語法:'[[yourDict ionary objectForKey:@「blue」] setSelected:YES]'。這裏的點語法會導致類型錯誤,因爲'objectForKey:'不是靜態類型返回一個UIButton。 – Chuck

+0

我的不好。我會更新它。 – 2011-07-12 18:50:37

+0

這也很酷,雖然故事中的所有'UIButton'對象都會帶來一些痛苦。我喜歡文斯的其他答案,但仍不太清楚如何使用它。兩者都有幫助謝謝。 – johnbakers