iPhone: простой стол. Фоновое изображение ячейки не появляется - PullRequest
1 голос
/ 22 сентября 2010

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

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

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

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

}

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

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

UIImage * image = [appDelegate ...];
cell.backgroundView = [[[UIImageView alloc] initWithImage:image] autorelease];
1 голос
/ 22 сентября 2010

Я подозреваю, что в простом табличном представлении indexPath.section не вернет вам правильные данные. Таким образом, эти несколько строк кода могут дать вам ноль 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];
}
...