2010-09-10 46 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

相关问题