пользовательская ячейка на основе индекса строки iphone - PullRequest
0 голосов
/ 15 марта 2010

Мне интересно, возможно ли добавить содержимое ячейки в uitableview на основе индекса строки?

Например, если это первая ячейка (строка 0), я хочу добавить изображение и текст. Если это второй ряд, я хотел бы добавить кнопку. Для всех остальных строк я хотел бы просто добавить строку текста.

Я пытался использовать indexPath.row. Это сработало в первый раз, но когда я прокручиваю экран и затем делаю резервную копию, мое первое изображение исчезает.

- (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;
}

1 Ответ

0 голосов
/ 15 марта 2010

Как настроить вы хотите эти клетки? Если вы только добавляете текст, изображения и дополнительные кнопки, вы можете создать ячейку вне проверки строки, а затем добавить необходимые элементы в эти операторы if.

 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;

Однако строка изменится, когда вы начнете перерабатывать свои ячейки, возможно, вы захотите иметь что-то в реальных данных, которое указывает, как ячейка должна вести себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...