我有阵列:
self.colors = @[@"redColor",
@"blueColor",
];
然后功能:
self.view.backgroundColor = [UIColor [[self.colors[1] ] ];
我放的时候:
self.view.backgroundColor = [UIColor redColor];
它立即起作用。这不起作用'预期标识符'
我不能在backgroundcolor
方法中使用变量吗?
答案 0 :(得分:1)
您正在数组中存储字符串。如果要存储颜色对象,请将代码更改为以下内容:
self.colors = @[[UIColor redColor],
[UIColor blueColor],
];
然后你可以做
self.view.backgroundColor = self.colors[1];
答案 1 :(得分:0)
redColor
和blueColor
是UIColor
类中的方法,返回UIColor*
。
类UIColor
没有方法接收表示颜色的字符串,并返回UIColor*
。
如果你希望它按照你描述的方式工作,那么就形成一个UIColors数组而不是字符串:
self.colors = @[[UIColor redColor],
[UIColor blueColor]
];
答案 2 :(得分:0)
我认为你误解了从self.colors[1]
返回的内容。有几种方法可以做到这一点我将从你已有的代码开始。
所以我们有:
// Our array of colors as strings
self.colors = @[@"redColor", @"blueColor", etc];
// Because our colors are strings we need to use NSSelectorFromString to convert
// the string to a selector
SEL colorSelector = NSSelectorFromString(self.colors[1]);
// Then we need to check if colorSelector actually responds to UIColor
if([UIColor respondsToSelector:colorSelector]) {
// If the if statement is true then we are good to set the color with it
self.view.backgroundColor = [UIColor performSelector:colorSelector];
}
或者正如其他人已经说过的那样,你可以做得更好
self.colors = @[[UIColor redColor], [UIColor blueColor]];
self.view.backgroundColor = self.colors[1];