我有以下代码填充我的tableview:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (friendsArray.count > 0)
{
return friendsArray.count;
}
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
if (friendsArray.count <= 0)
{
cell.textLabel.text = @"It is lonely here";
cell.detailTextLabel.text = @"Please add some friends";
}
else
{
Friend *friend = [friendsArray objectAtIndex:indexPath.row];
cell.textLabel.text = friend.name;
cell.detailTextLabel.text = friend.email;
}
return cell;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop];
FriendDelete *friendDelete = [FriendDelete new];
friendDelete.FDDelegate = self;
Friend *friend = [friendsArray objectAtIndex:indexPath.row];
[friendDelete deleteFriend:friend.requestId];
[app showLoader:@"Deleting.."];
}
}
为了删除委托电话中的朋友,我写了:
- (void)friendDeleteSuccessfull:(NSString *)userId
{
[app hideLoader];
[app dispToast:@"Deleted Friend"];
for (Friend *friend in friendsArray)
{
if ([friend.userId isEqualToString:userId])
{
NSInteger row = [friendsArray indexOfObject:friend];
[friendsArray removeObjectAtIndex:row];
[friendListTable endUpdates];
[friendListTable reloadData];
break;
}
}
}
这一切都很好,直到我到达最后一行。当我尝试删除表的最后一行时,应用程序崩溃并出现以下错误:
Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-3318/UITableView.m:1582
因此更改了代码,以便仅在数组有任何值时调用endUpdates
,否则通过添加以下条件直接调用reloadData
:
if (friendsArray.count > 0) {
[friendListTable endUpdates];
}
现在最后一行删除没有崩溃,但表仍显示最后一行。也就是说,表格根本没有重新加载。可能是什么问题。我该如何解决?
答案 0 :(得分:1)
尝试在
中写下[tableView reloadData]
if(friendsArray.count > 0){
[friendListTable endUpdates];
[tableView_object reloadData];
}