将图像动态加载到uitableviewcell中

时间:2011-05-12 06:35:45

标签: objective-c ios uitableview didselectrowatindexpath

除了使用if语句之外,是否有更好的方法将图像动态加载到tableviewcell中以用于不同的行?如果我有很多细胞怎么办?这是否意味着我必须写很多if语句?还有一种方法可以从核心数据中检索图像并将其用作tableview单元格的图像吗?提前谢谢。

- (UIImage *)imageForMagnitude:(CGFloat)magnitude { 
if (magnitude >= 5.0) {
    return [UIImage imageNamed:@"5.0.png"];
}
if (magnitude >= 4.0) {
    return [UIImage imageNamed:@"4.0.png"];
}
if (magnitude >= 3.0) {
    return [UIImage imageNamed:@"3.0.png"];
}
if (magnitude >= 2.0) {
    return [UIImage imageNamed:@"2.0.png"];
}
return nil;

}

编辑:如果不是关于幅度怎么办?例如,产品列表或类似iphone上的应用商店。他们是如何设法为桌面上的不同应用生成不同的图像?他们使用桌子还是有更好的方法来做这件事?

2 个答案:

答案 0 :(得分:1)

嗯,也许是一个开关声明。或者你可以将幅度调整为然后然后..

[NSString stringWithFormat:@"%d.0.png", newMagnitude];

答案 1 :(得分:0)

使用floorf

中的<math.h>函数向下舍入幅度

然后使用MINMAX宏来保护实际值不超过5或低于2.

int realMagnitude = (int) MAX(MIN(floorf(magnitude), 5.0f), 2.0f);
return [UIImage imageNamed:[NSString stringWithFormat:@"%d.0.png", realMagnitude]];

更新:我认为这就是您要找的内容:在-tableView:cellForRowAtIndexPath:中,使用提供的NSIndexPath来获取相关图片:

cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", indexPath.row]];