2009-05-27 2 views
1

У меня эта очень странная ошибка. Когда я просматриваю свое представление таблицы, вплоть до раздела, которое я называю «описанием», ячейки в этом разделе не будут отображаться. Вместо этого заголовок раздела повторяется снова и снова. Похоже, что кто-то, кто отвечает за экранный дисплей в iPhone, не находит ничего для отображения и позволяет тому, что было на экране раньше (и это название раздела, потому что я прокручивался вниз).Странная ошибка в устройстве: содержимое ячейки UITableView не отображается

Если я сделаю снимок экрана, вместо ячейки будет черный фон.

Эта ошибка не возникает в симуляторе, но только в реальном устройстве.

Кто-нибудь когда-нибудь встречал подобные вещи? Не могли бы вы догадаться, где проблема?

ответ

0

Я нашел решение ... Было очевидно, но все же ...

My UILabel имеет размер больше 2048 px. Нам не разрешено использовать размер, который больше, чем это, потому что рендеринг настолько странный.

Этот поток stackoverflow.com/questions/773386/inserting-various-views-into-uiscrollview уже рассмотрел эту проблему.

0

Попробуйте изменить описание слова на что-то еще. Классы Objective C используют описание слова для обозначения метода, в котором объект может описать себя с помощью NSString. Если изменение имени исправляет это, ваша ошибка связана с этим.

Вы можете увидеть описание на работе, как это:

NSString *aString = [[NSString alloc] initWithFormat:@"hi"]; 
NSLog(@"%@", [aString description]); 
+0

Хорошо, я пробовал, но ничего не менял ... – Unfalkster

+0

Заголовок раздела «Описание» не должен вызывать никаких проблем. Это нормальная строка! – lostInTransit

0

Спасибо за ваши ответы, я положу здесь код. Но помните, что мой код хорошо работает для всех других ячеек, поэтому он должен был быть связан с конкретным содержимым этой ячейки, но это всего лишь некоторый текст в UILabel ...

Не стесняйтесь посмотреть видео Я сделал, это очень любопытное поведение для iPhone, вы даже видели это? dl.free.fr/rlQmFyWS0

Вот код для cellForRowAtIndexPath: метод, только часть обеспокоен описанием клетки:

case 3: // A big cell containing the description 
    { 
     // Try to find an already allocated cell with the description (note : there is only one description cell per table so no need to check the content...) 
     UITableViewCell * descriptionCell = [tableView dequeueReusableCellWithIdentifier:kTextCellIdentifier]; 
     if (descriptionCell == nil) { 
      // As a frame, use the description label's one plus a little margin for the height 
      descriptionCell = [[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, self.descriptionText.frame.size.height + (2*kCellInset)) reuseIdentifier:kTextCellIdentifier] autorelease]; 
      descriptionCell.selectionStyle = UITableViewCellSelectionStyleNone; 
      // The descriptionText UILabel has been previously initialized properly by tableview:heightForRowAtIndexpath: method 
      [descriptionCell.contentView addSubview:self.descriptionText]; 
     } 
     return descriptionCell; 

А вот та часть, где я инициализируется поле descriptionText:

// Customize row height for each cell 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (indexPath.section == 3) { 
    CGSize realSize; 
    if (self.descriptionText != nil) { 
     // the description has been previously initialized 
     realSize = descriptionText.frame.size; 
    } 
    else { 
     // We need to dynamically resolve the height for the description zone 
     NSString * desc = (NSString *)[product objectForKey:@"description"]; 
     UILabel * descLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 
     // Unlimited number of lines 
     descLabel.numberOfLines = 0; 
     descLabel.text = desc; 
     // Set a preferred width and anything for the height 
     realSize = [descLabel sizeThatFits:CGSizeMake(tableView.frame.size.width - (2*kCellInset), 1)]; 
     // Take the opportunity to set the frame with the correct values 
     descLabel.frame = CGRectMake(kCellInset, kCellInset, realSize.width, realSize.height); 
     self.descriptionText = descLabel; 
     [descLabel release]; 
    } 
    return (realSize.height + (2*kCellInset)); 
} 
else { 
    return kImageCellHeight; 
} 
return 0; 

}

Любое предположение было бы более чем приветствуется ... Я продолжаю расследование здесь

Смежные вопросы