我有一個工具欄中的刷新按鈕,重新生成NSArray
並嘗試重新加載表的內容。UITableView不重裝部分和內容
不過,我是否具備:
if (boolCondition) {
[self refreshTableDataSet];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:kTableSectionOfInterest] withRowAnimation:UITableViewRowAnimationFade];
}
或:
if (boolCondition) {
[self refreshTableDataSet];
[self.tableView reloadData];
}
所有其他嘗試刷新表失敗。有時它起作用,有時不起作用。
我在-tableView:cellForRowAtIndexPath:
一些NSLog
語句,讓我知道當被解僱這個方法。刷新失敗時,我看不到這些NSLog
語句的輸出。
當我有新數據時,是否有重新加載表視圖時丟失的東西?
編輯
在我-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'。它看起來像我失去了一些東西?謝謝! – 2009-09-23 09:10:57
我在錯誤的地方進行了'if(cell == nil)'測試。我有一個switch-case樹,必須將條件移動到每個case塊。感謝您徹底的想法。 – 2009-09-23 18:01:25
好偵探! – mahboudz 2009-09-23 19:43:59