custom cell based on row index iphone
        Posted  
        
            by dubbeat
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by dubbeat
        
        
        
        Published on 2010-03-15T15:10:02Z
        Indexed on 
            2010/03/15
            15:19 UTC
        
        
        Read the original article
        Hit count: 345
        
I'm wondering if it is possible to add cell content to a uitableview based on the row index?
For example if it is the first cell (row 0) I want to add an image and text. If it is the second row I would like to add a button. For all other rows I would like to just add a line of text.
I tried using indexPath.row. It worked the first time but when I scroll off of the screen and then back up my first image dissapears.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    PromoListItem *promo = [promoList objectAtIndex:indexPath.row];
    static NSString *CellIdentifier = @"Cell";
    AsyncImageView *asyncImageView = nil;
    UILabel *label = nil;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(indexPath.row==0)
    {
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        CGRect frame;
        frame.origin.x = 0;
        frame.origin.y = 0;
        frame.size.width = 100;
        frame.size.height = 100;
        asyncImageView = [[[AsyncImageView alloc] initWithFrame:frame] autorelease];
        asyncImageView.tag = ASYNC_IMAGE_TAG;
        [cell.contentView addSubview:asyncImageView];
        frame.origin.x = 110;
        frame.size.width =100;
        label = [[[UILabel alloc] initWithFrame:frame] autorelease];
        label.tag = LABEL_TAG;
        [cell.contentView addSubview:label];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    } else {
        asyncImageView = (AsyncImageView *) [cell.contentView viewWithTag:ASYNC_IMAGE_TAG];
        label = (UILabel *) [cell.contentView viewWithTag:LABEL_TAG];
    }
    NSURL *url = [NSURL URLWithString:promo.imgurl];
    [asyncImageView loadImageFromURL:url];
    label.text = promo.artistname;
    }else
    {
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
            CGRect frame;
            frame.origin.x = 0;
            frame.origin.y = 0;
            frame.size.width = 100;
            frame.size.height = 100;
            //asyncImageView = [[[AsyncImageView alloc] initWithFrame:frame] autorelease];
        //  asyncImageView.tag = ASYNC_IMAGE_TAG;
        //  [cell.contentView addSubview:asyncImageView];
            frame.origin.x = 110;
            frame.size.width =100;
            label = [[[UILabel alloc] initWithFrame:frame] autorelease];
            label.tag = LABEL_TAG;
            [cell.contentView addSubview:label];
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        } else {
        //  asyncImageView = (AsyncImageView *) [cell.contentView viewWithTag:ASYNC_IMAGE_TAG];
            label = (UILabel *) [cell.contentView viewWithTag:LABEL_TAG];
        }
        //NSURL *url = [NSURL URLWithString:promo.imgurl];
        //[asyncImageView loadImageFromURL:url];
        label.text = promo.artistname;
    }
    return cell;
}
© Stack Overflow or respective owner