iPhone: Проблема с обычным столом. Фоновое изображение ячейки не отображается

У меня есть код, который меняет фоновое изображение ячейки, который отлично работает в сгруппированном табличном представлении. Однако не в простой таблице. Кто-нибудь знает, почему они по-другому ведут себя? Все, что я хочу сделать, это добавить фоновое изображение в ячейку таблицы (обычную).

Это отлично работает в представлении сгруппированной таблицы. Нужна ли мне настраиваемая ячейка для работы с обычным обзором?

Спасибо Саймон

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

UniversalAppAppDelegate *appDelegate = (UniversalAppAppDelegate *)[[UIApplication sharedApplication] delegate];

NSArray *rowData;

// Check see if section Data is populated
if (self.sectionData == nil) {
    rowData = [(NSDictionary *)[tableData objectAtIndex:indexPath.section] objectForKey:@"SectionItems"];
} else {
    rowData = [(NSDictionary *)[sectionData objectAtIndex:indexPath.section] objectForKey:@"SectionItems"]; //[self.sectionData objectAtIndex:indexPath.section];
}

NSDictionary *cellDetails = [rowData objectAtIndex:indexPath.row];

// Clear any previous imageview
UIView *view = [cell.backgroundView viewWithTag:99];
if (view != nil)
    [view removeFromSuperview];

// Add a new imageview
NSString *filename = [cellDetails objectForKey:@"TableItemFullImage"];
if (filename.length > 0) {

    UIImageView *cellImageView = [[UIImageView alloc] initWithImage:[appDelegate imageForImageID:[cellDetails objectForKey:@"TableItemFullImage"] imageExtension:[cellDetails objectForKey:@"TableItemFullImageType"]]];
    cellImageView.tag = 99;
    CGRect newFrame = cell.backgroundView.bounds;
    cellImageView.frame = newFrame;

    [cell.backgroundView addSubview:cellImageView];
    [cellImageView release];
}

}


person Burf2000    schedule 22.09.2010    source источник


Ответы (2)


Вы слишком усложняете.

UIImage * image = [appDelegate ...];
cell.backgroundView = [[[UIImageView alloc] initWithImage:image] autorelease];
person tc.    schedule 23.09.2010

Я подозреваю, что в обычном табличном представлении indexPath.section не вернет вам правильные данные. Таким образом, эти несколько строк кода могут дать вам nil rowData. Дважды проверьте это

// Check see if section Data is populated
if (self.sectionData == nil) {
    rowData = [(NSDictionary *)[tableData objectAtIndex:indexPath.section] objectForKey:@"SectionItems"];
} else {
    rowData = [(NSDictionary *)[sectionData objectAtIndex:indexPath.section] objectForKey:@"SectionItems"]; //[self.sectionData objectAtIndex:indexPath.section];
}
person vodkhang    schedule 22.09.2010
comment
Вопрос, другой мой разработчик сказал, что нельзя поместить изображение на простую ячейку? он говорит чушь? - person Burf2000; 22.09.2010
comment
Обсуждение По умолчанию используется ноль для ячеек в таблицах простого стиля (UITableViewStylePlain) и ненулевое значение для таблиц сгруппированного стиля (UITableViewStyleGrouped). UITableViewCell добавляет фоновое представление в качестве подпредставления за всеми другими представлениями и использует его текущее местоположение кадра. developer.apple.com/library/ios / # documentation / uikit / reference / - person vodkhang; 22.09.2010
comment
Приведенный выше комментарий взят из документации UITableViewCell. Тогда, я думаю, это ваша проблема, вам может потребоваться установить cell.backgroundView = cellImageView, а не добавлять в качестве подпредставления - person vodkhang; 22.09.2010