使用NSString作为对象名称

时间:2010-09-10 13:35:48

标签: iphone objective-c

我使用以下数组:

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中是否可行?我很确定这与指针/对象问题有关,但我似乎无法找到任何类似的例子。感谢您的回答,我们将不胜感激!

2 个答案:

答案 0 :(得分: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"];

但是大多数时候你不需要通过名字访问它们,只需将按钮放在数组或其他容器中即可。

答案 1 :(得分:0)

没有你尝试在所显示的代码中做什么是没有意义的。你可以这样做:

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

这是你的意思吗?