我想替换这个:
self.fajerImage = [UIImage imageNamed:@"FirstViewBG_5N.png"];
self.shrogImage = [UIImage imageNamed:@"FirstViewBG_4N.png"];
self.dohorImage = [UIImage imageNamed:@"FirstViewBG_3N.png"];
self.aaserImage = [UIImage imageNamed:@"FirstViewBG_2N.png"];
self.mgribImage = [UIImage imageNamed:@"FirstViewBG_1N.png"];
self.eeshaImage = [UIImage imageNamed:@"FirstViewBG_0N.png"];使用for循环..我不知道如何在循环中一个接一个地调用依瓦尔。
请注意,将它们放在循环之前的数组中是一个很好的想法,但我没有成功地实现..
谢谢!
发布于 2010-12-06 04:02:57
正如this blog post中所讨论的,实现这一点的一个很好的方法是使用key value coding。尝试使用:
NSArray *nameArray = [[NSArray alloc] initWithObjects:@"fajerImage",
@"shrogImage",
@"dohorImage",
@"aaserImage",
@"mgribImage",
@"eeshaImage",
nil];
int i = 0;
for (NSString *name in nameArray) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"FirstViewBG_%dN.png", i++]];
[self setValue:image forKey:name];
}
[nameArray release];(如果我理解错了,您应该将上面代码中的UIImage替换为实际的对象类型。)
发布于 2010-12-06 04:16:23
您可以使用键值编码语法:
NSString *names=[NSArray arrayWithObjects:@"eeshaImage",@"mgribImage",@"aaserImage",@"dohorImage",...,nil];
for (int i=0; i<names.count; i++) {
NSString *name=[names objectAtIndex:i];
UIImage *image=[UIImage imageNamed:[NSString stringWithFormat:@"FirstViewBG_%dN.png",i
[self setValue:image forKey:name];
}发布于 2010-12-06 04:04:35
我的一个同事喜欢这样的模式(未经测试):
id *images[] = {
&eeshaImage,
&mgribImage,
&aaserImage,
&dohorImage,
&shrogImage,
&fajerImage
};
for (size_t i = 0;i < sizeof(images) / sizeof(*images);++i) {
NSString *name = [NSString stringWithFormat:@"FirstViewBG_%zuN.png", i];
*(images[i]) = [[UIImage imageNamed:name] retain];
}不过,你必须问问自己,仅仅为了让它更具可扩展性,付出的可读性代价是否值得。
https://stackoverflow.com/questions/4360837
复制相似问题