2010-09-10 74 views
2

我使用下面的數組:使用NSString作爲對象名稱

NSMutableArray *buttonNames = [NSMutableArray arrayWithObjects:@"button1", @"button2", @"button3", nil]; 

我再通過這個數組要循環,並與每個數組元素作爲對象名稱創建UIButtons,這樣的事情:

for(NSString *name in buttonNames) { 
    UIButton name = [UIButton buttonWithType:UIButtonTypeCustom]; 
    // ... button set up ... 
} 

但是這不起作用,我希望它會給我三個名爲button1,button2和button3的UIButtons。

這是可能的objective-c嗎?我很確定這是針對指針/對象的問題,但我似乎無法找到任何類似的例子。感謝您的任何答案,他們將不勝感激!

回答

0

沒有你試圖做的代碼顯示沒有意義。你可以這樣做:

for (NSString* name in buttonNames) { 
    UIButton* button = [UIButton buttonWithType: UIButtonTypeCustom]; 
    button.title = name; 
    // TODO Add the button to the view. 
} 

這是你的意思嗎?

+0

感謝您的快速響應,這完美的工作! – Adam 2010-09-10 14:01:33

2

不,你不能在運行時像Objective-C那樣建立變量名。

如果你硬要給它們命名,你可以做的是使用dictionary

NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 
for(NSString *name in buttonNames) { 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [dict setObject:button forKey:name]; 
    // ... 
} 

然後,你可以在以後使用的名字訪問的按鈕:

UIButton *button = [dict objectForKey:@"foo"]; 

但大多數的時候你無論如何不需要通過名稱訪問它們,只需將按鈕放在數組或其他容器中就足夠了。

+0

+1,即使我已經打出大部分幾乎相同的答案時,你的彈出。 – JeremyP 2010-09-10 13:48:22

+0

@Jeremy:我知道這種感覺:) – 2010-09-10 13:49:04

+0

謝謝你的回答,我爲St3fan回答了這個問題,但你的建議也很有幫助,我最終可能會用到它的另一部分:)謝謝! – Adam 2010-09-10 14:02:54

相關問題