我有一个 UITableView 中的部分设置,它们都有一个自定义部分标题视图。一次只有一个部分可以有可见的行。
要创建显示其他单元格行的效果,我基本上使用以下函数:
[self.tableView beginUpdates];
if ( sectionHeaderInsert >= 0 && sectionHeaderInsert <= numberOfSectionsInTableView ) {
[ticketReastepsScreenView.tableView insertRowsAtIndexPaths:indexPathsInsert withRowAnimation:UITableViewRowAnimationFade];
}
[self updateTmpSelectedNumberToCurrent];
if ( sectionHeaderRemove >= 0 && sectionHeaderRemove <= numberOfSectionsInTableView ) {
[ticketReastepsScreenView.tableView deleteRowsAtIndexPaths:indexPathsRemove withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView endUpdates];
现在发生的事情是,最后新部分“打开”而旧部分正确“关闭”,但是:如果我有更多适合屏幕的部分,则(部分)可见的最后一个部分将不会正确重新绘制 - 它完全被白色覆盖。
所有部分都被问到新的高度,我认为它甚至要求新的观点(我有一个数组)。然后要求视图 [view setNeedsDisplay];
当我稍微滚动一下以使最后一个部分标题消失然后再将其滚动回来时,它会再次活跃起来并且可见,直到我再次更改当前打开的部分。
UPD:这种有趣的行为仅在我同时执行 insertRow 和 deleteRow 时才会出现。我也可以简单地关闭一个部分(deleteRow),然后在一个部分触摸动作中打开新的部分(insertRow),行为是不同的。
我还尝试在两个操作之间设置 endUpdates 和 beginUpdates - 没有积极的结果。
UPD2:当过渡到最终位置时(位置很好)我可以看到最后一节标题被正确绘制,但随后消失(没有动画,简单的纯白色)