Что не так с iOS 3.0 и numberOfLines = 0 для UITableViewCell? - PullRequest
0 голосов
/ 25 февраля 2011

Хорошо, вот в чем дело, уже два дня мы пытаемся построить приличную ячейку таблицы со стилем субтитров.

поэтому я переопределил метод 'tableview: heightforrowatindex:'. отлично я также поставил число строк для деталей в 0.

это отлично работает в ios4.0

но для ios 3.0 это не так кажется, что текстовая метка и метка детализации имеют определенные поля в верхней части, что толкает все содержимое ячейки вниз, чтобы перекрыть ячейку ниже. Это безумное поведение. и я не смог найти способ установить местоположение textlabel / detailtextlabel внутри его представления содержимого.

Пожалуйста, помогите. Изменение размера UITableViewCells в iOS4 по сравнению с iOS3 Этот парень сказал, что собирается реализовать свои собственные элементы управления. но это слишком много работы, и это трудно для меня. Должен быть способ, которым кто-то уже знал, чтобы обойти эту проблему. спасибо

1 Ответ

0 голосов
/ 28 февраля 2011

на самом деле кажется, что люди из apple не сделали uitableviewcell настолько настраиваемым, как надеялся бы обычный разработчик.

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

Я сделал это поспешно. до

UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"cell"];

if( nil == cell ) {     
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];

    //contentview
    UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(1, 5, 11, 9)];
    imageView.image=_headerImage;

    UILabel* textLabel=[UILabel new];
        UILabel* detailTextLabel=[UILabel new];

//get and set the size of the labels here 

        textLabel.font=_font;
    detailTextLabel.font=_fontD;
    textLabel.numberOfLines=0;
    detailTextLabel.numberOfLines=0;

    textLabel.backgroundColor=[UIColor clearColor];
    detailTextLabel.backgroundColor=[UIColor clearColor];

    textLabel.tag=202;
    detailTextLabel.tag=203;
    imageView.tag = 204;

    [cell.contentView addSubview:imageView];
    [cell.contentView addSubview:textLabel];
    [cell.contentView addSubview:detailTextLabel];
    [textLabel release];
    [detailTextLabel release];
    [imageView release];
}

конечно при реализации

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    if(!_cellTitleSizes)
    {
        _cellTitleSizes= [NSMutableArray new];
        _cellDetailSizes= [NSMutableArray new];
    }

    MenuItem *tempItem =[self GetItemFromIndexPath:indexPath];

    CGSize size = [ tempItem.title sizeWithFont:_font constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];
    CGSize size2 = [[MenuListViewController GetDetailsToDisplay:tempItem] sizeWithFont:_fontD constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];

    //the following information will be used to set the title and description labels in the cell.
    [_cellTitleSizes addObject:[NSValue valueWithCGSize:size]];
    [_cellDetailSizes addObject:[NSValue valueWithCGSize:size2]];   

    return MAX( (size.height+size2.height)+ 30, 44.0f );
}

удачи всем вам

...