self.view.backgroundcolor非常基本的用法

时间:2014-05-16 17:53:38

标签: objective-c

我有阵列:

self.colors = @[@"redColor",
                    @"blueColor",
                    ];

然后功能:

self.view.backgroundColor = [UIColor [[self.colors[1] ] ];

我放的时候:

self.view.backgroundColor = [UIColor redColor];

它立即起作用。这不起作用'预期标识符' 我不能在backgroundcolor方法中使用变量吗?

3 个答案:

答案 0 :(得分:1)

您正在数组中存储字符串。如果要存储颜色对象,请将代码更改为以下内容:

self.colors = @[[UIColor redColor],
    [UIColor blueColor],
];

然后你可以做

self.view.backgroundColor = self.colors[1];

答案 1 :(得分:0)

redColorblueColorUIColor类中的方法,返回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];