我使用以下数组:
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 :(得分: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.
}
这是你的意思吗?