我为几个按钮创建了一个插座集合,现在我需要更改按钮的背景,这是我的代码,但编译器给了我一个错误:
[outlet makeObjectsPerformSelector:@selector(setBackgroundImage:img forState:UIControlStateSelected)];
错误:
预期':'
我该如何解决?
已编辑:
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 100, 50)];
imgView.image = [UIImage imageNamed:@"mask.png"];
[outlet makeObjectsPerformSelector:@selector(setBackgroundImage:)withObject:imgView];
[imgView release];
答案 0 :(得分:1)
您不能在@selector(...)
中添加参数。您需要使用makeObjectsPerformSelector:withObject:
,例如你的代码应该像一样
[EsOutlet makeObjectsPerformSelector:@selector(setBackgroundImage:) withObject:img];
我说某事就像是因为我认为没有办法为一个带有多个参数的选择器做这件事。
答案 1 :(得分:0)
@selector
语句中不能包含参数。由于没有makeObjectsPerformSelector
可以在NSArray中使用两个参数,因此您需要遍历对象并自行调用setBackgroundImage:forState:
方法。
E.g。
for (UIButton *b in outlet) {
[b setBackgroundImage:img forState:UIControlStateSelected];
}
答案 2 :(得分:0)
那是因为您的选择器语法不正确。您无法向@selector
语句提供参数。
由于您需要提供多个参数(图像+控制状态),因此您应该遍历EsOutlet
并执行操作:
for (UIControl *control in EsOutlet)
{
//perform action on control
}