基于单元格数据的iPhone表格视图单元格样式

时间:2011-07-30 20:29:44

标签: iphone objective-c uitableview

我正在试图弄清楚如何根据单元格的文本内容在单元格中显示特定类型的图像。例如,我正在使用的教程书中的这个方法将允许我显示前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',我可以显示不同的图像而不是星形?

3 个答案:

答案 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;
}