我正在试图弄清楚如何根据单元格的文本内容在单元格中显示特定类型的图像。例如,我正在使用的教程书中的这个方法将允许我显示前3个单元格的星形图像:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
if (row < 3) {
UIImage *image = [UIImage imageNamed:@"star.png"];
cell.imageView.image = image;
}
cell.textLabel.text = [listData objectAtIndex:row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
return cell;
}
有什么方法可以在这里获得实际的细胞内容吗?那么,例如,如果单元格包含文本'bob',我可以显示不同的图像而不是星形?
答案 0 :(得分:2)
好像你可以查看你的listData
对象然后决定那里。所以你可以试试这样的东西
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:SimpleTableIdentifier] autorelease];
}
NSUInteger row = [indexPath row];
if ([[listData objectAtIndex:row] isEqualToString:@"bob"]) {
UIImage *image = [UIImage imageNamed:@"bob.png"];
cell.imageView.image = image;
}
else if (row < 3) {
UIImage *image = [UIImage imageNamed:@"star.png"];
cell.imageView.image = image;
}
cell.textLabel.text = [listData objectAtIndex:row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
return cell;
}
答案 1 :(得分:0)
也许您应该设置一个字典,其中包含人物的名称作为字典的键,图像名称作为值。然后你可以抓住单元格的文本并将其用作字典的查找。
答案 2 :(得分:0)
设置文本后:
if([cell.textLabel.text rangeOfString:@"bob"].location != NSNotFound) {
UIImage *image = [UIImage imageNamed:@"bob.png"];
cell.imageView.image = image;
}
else {
UIImage *image = [UIImage imageNamed:@"star.png"];
cell.imageView.image = image;
}