UItableviewcell с несколькими метками и пользовательской высотой - PullRequest
2 голосов
/ 23 июня 2011

Я добавил несколько ярлыков в ячейку My Tableview. Я отображаю сообщение Facebook, имя отправителя и фотографии. Для некоторых сообщений может быть возможно, что сообщение недоступно или фотография недоступна. Я проверяю нулевое условие и, если значение отсутствует, я не создаю ярлык для этой конкретной ячейки. . Теперь у некоторых меток есть большая строка, у некоторых может быть маленькая .. Я перепутал с высотой ячейки. Я могу получить динамическую высоту для 1 метки, как это показано в примере Динамическая высота , но как мне управлять высотой в соответствии с номером текста этикетки ... мой код похож на

    if ([(Facebook * )[tableArray objectAtIndex:indexPath.row]sender]!= nil) {
    labelSender = [[UILabel alloc]initWithFrame:CGRectMake(image_view.frame.size.width+20, 20, 120, 20) ];



    labelSender.text = [NSString stringWithFormat:@"%@",[(Facebook * )[tableArray objectAtIndex:indexPath.row]sender]];

    [labelSender setLineBreakMode:UILineBreakModeWordWrap];

    [labelSender setNumberOfLines:0];

    labelSender.textColor = [UIColor colorWithRed:59/255.0 green:89/255.0 blue:153/255.0 alpha:1.0];

    labelSender.font = [UIFont fontWithName:@"Arial" size:15.0];

    [cell.contentView addSubview:labelSender];


    [labelSender release];

    }


if ([(Facebook * )[tableArray objectAtIndex:indexPath.row]post]!= nil) {


        NSLog(@"post is ==%@",[(Facebook * )[tableArray objectAtIndex:indexPath.row]post]);

        labelMessage = [[UILabel alloc]initWithFrame:CGRectMake(image_view.frame.size.width+20, labelSender.frame.size.height + 20, 200, 20)];

        labelMessage.text = [NSString stringWithFormat:@"%@",[(Facebook * )[tableArray objectAtIndex:indexPath.row]post]];

        [labelMessage setLineBreakMode:UILineBreakModeWordWrap];

        [labelMessage setNumberOfLines:0];

        labelMessage.backgroundColor = [UIColor yellowColor];

        labelMessage.font = [UIFont fontWithName:@"Arial" size:13.0];

        [cell.contentView addSubview:labelMessage];

        [labelMessage release]; 

    }

пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Вы должны хранить отображаемые метки в NSMutableArray, который является свойством ячейки. Таким образом, вы можете выполнить итерацию просто с помощью:

for (UILabel *tmpLabel in yourLabelArray){
   // do: add height to sum
}

Это сэкономит вам if (labelExists) для каждой метки.

Удачи!

0 голосов
/ 23 июня 2011

Мне кажется, что лучше использовать UITextView при обработке динамического контента.

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