开发者

custom cell based on row index iphone

I'm wondering if it is possible to add cell content to a uit开发者_如何学Goableview 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;
}


How customized do you want these cells? If you are only adding text, images and accessory buttons, you can create the cell outside of your row check, and then add the needed items inside those if statements.

 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    NSUInteger row = [indexPath row];
    switch(row) {
        case 0:
            cell.textLabel.text = @"row 0";
            cell.image
            break;
        case 1:
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
            break;
        default:
            cell.textLabel.text = [NSString stringWithFormat:@"row %d",row];
            break;      
    }

    return cell;

However, the row will change when you start to recycle your cells, you may want to have something in the actual data that indicates how the cell should behave.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜