У меня есть кнопка обновления на панели инструментов, которая восстанавливает NSArray
и пытается перезагрузить содержимое таблицы.UITableView не перезагружает раздел и содержимое
Однако, есть ли у меня:
if (boolCondition) {
[self refreshTableDataSet];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:kTableSectionOfInterest] withRowAnimation:UITableViewRowAnimationFade];
}
или:
if (boolCondition) {
[self refreshTableDataSet];
[self.tableView reloadData];
}
О любой другой попытке обновить таблицу не удается. Иногда это работает, иногда нет.
У меня есть NSLog
заявления в -tableView:cellForRowAtIndexPath:
, чтобы сообщить мне, когда этот метод уволен. Когда обновление завершается неудачно, я не вижу выход этих операторов NSLog
.
Есть ли что-то, что мне не хватает в перезагрузке табличного представления, когда у меня есть новые данные?
EDIT
В моем -refreshTableDataSet
метод:
- (void) refreshTableDataSet {
NSSortDescriptor *_objectTypeSorter = [[[NSSortDescriptor alloc] initWithKey:@"object.type" ascending:YES] autorelease];
NSSet *_objectSet = [managedObjectContext fetchObjectsForEntityName:@"Object" withPredicate:[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"group.name like '%@'", [group name]]]];
self.objects = [[[_objectSet allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObjects: _objectTypeSorter, nil]] retain];
}
На мой взгляд таблицы -tableView:cellForRowAtIndexPath:
метод:
...
Object *_object = [self.objects objectAtIndex:indexPath.row];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = _object.name;
cell.detailTextLabel.text = _object.type;
cell.imageView.image = [UIImage imageNamed:@"GroupType.png"];
cell.accessoryView = [self imageViewForObjectDetailType:_object.type];
...
У меня есть метод accessoryView называется -imageViewForObjectDetailType
, который просто возвращает a UIImageView
:
return [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"GenericObjectDetailType.png"]] autorelease];
Есть retain
и/или release
сообщений, которые мне не хватает?
Я добавил код, который показывает, как я настраиваю свой NSArray. Похоже, я что-то упустил? Благодаря! –
У меня был тест 'if (cell == nil)' в неправильном месте. У меня есть дерево с коммутационным кодом, и мне пришлось переместить это условие на каждый блок case. Спасибо за ваши тщательные идеи. –
Хорошо следить! – mahboudz