gpt4 book ai didi

ios - UITableView-删除部分中的最后一个单元格

转载 作者:行者123 更新时间:2023-12-01 18:30:50 24 4
gpt4 key购买 nike

这是我在 UITableView 中删除单元格的代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];

if([tableView numberOfRowsInSection:[indexPath section]] > 1) {
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
} else {
[tableView deleteSections:[NSIndexSet indexSetWithIndex:[indexPath section]]
withRowAnimation:UITableViewRowAnimationFade];
}

[tableView endUpdates];
}

在删除单元格之前还有一些数据正在更新,但我很确定它正在正确更新,因为 count每次删除一个单元格时,数据源的数组总是少一。这是预期的行为。然而由于某种原因,每当我删除一个部分中的最后一个单元格时,我都会得到 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (0) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
这令人难以置信的沮丧,特别是因为从我在互联网上能够找到的内容来看,我这样做是正确的。也许我需要 sleep 了,已经有一段时间了。这里有什么想法吗?

解决方案:
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
if(tableIsEmpty) {
//**this** line was the culprit- returning zero here fixed the problem
return 0;
} else if(section == ([tableView numberOfSections] - 1)) {
//this is the last section- it only needs one row for the 'Delete all' button
return 1;
} else {
//figure out how many rows are needed for the section
}
}

最佳答案

您的问题在于您的 numberOfRowsInSection: 的实现方法。您的删除似乎没问题。删除行后,我认为您未能更新用于返回 numberOfRowsInSection: 中的行数的源。方法。由于那里的不一致,您会收到错误消息。请分享该代码。

关于ios - UITableView-删除部分中的最后一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9043265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com