我花了几个小时寻找解决方案,但没有任何运气。我正在尝试以编程方式删除一行(也取消选择同一行)。在下面的行删除调用之后, UITableViewDelgate 方法被预期调用并且数据源被更新但 UITableView 没有被刷新。deselectRowAtIndexPath 调用也不起作用。我尝试了各种场景,如注释行所示。
这是我的代码: checkoutPerson 作为观察者监听 NSNotificationCenter 消息的结果被调用。
- (void) checkoutPerson: (NSNumber*) personId {
Person *person = [_people objectForKey:personId];
if( person )
{
// Remove person from data source
int rowIndex = person.rowIndex;
S2Log(@"Deleting row number=%d", rowIndex);
[_allKeys removeObjectAtIndex:rowIndex];
[_people removeObjectForKey: personId];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowIndex inSection:0];
//[[self tableView] beginUpdates];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
S2Log(@"Deleting indexPath row=%d", [indexPath row]);
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
//[[self tableView] endUpdates];
S2Log(@"Reloading data");
//[[self tableView] reloadData];
//[self performSelector:@selector(refreshView) withObject:nil afterDelay:1.5];
//[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}
}
我将不胜感激。谢谢-维伦德拉
我相信删除的单元格没有被回收。如果我删除中间的行,最后一行总是被删除(因为少了一个项目),但删除的行仍然存在。