【发布时间】:2010-04-27 15:46:32
【问题描述】:
我正在使用 UITableView 来显示一系列计算的结果。当用户点击“计算”时,我将最新结果添加到屏幕上。当我添加一个新单元格时,UITableViewCell 对象被添加到一个数组中(由tableView:cellForRowAtIndexPath: 索引),然后我使用以下代码将此新行添加到屏幕上显示的内容中:
[thisView beginUpdates];
[thisView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation: UITableViewRowAnimationFade];
[thisView endUpdates];
这会导致显示新单元格。但是,然后我想立即向下滚动屏幕,以便新单元格是屏幕上最下方的单元格。我使用以下代码:
[thisView scrollToRowAtIndexPath:newIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
这几乎效果很好。但是,第一次添加和滚动一个单元格时,它只会在屏幕上短暂出现,然后消失。视图向下滚动到正确的位置,但单元格不存在。手动滚动视图,直到这个不可见的新单元格的位置离开屏幕,然后再次返回,导致单元格出现 - 之后它的行为正常。这只发生在第一次添加单元格时;随后的单元格没有这个问题。无论scrollToRowAtIndexPath 和insertRowsAtIndexPath 动画设置的组合如何,它也会发生。
编辑: 我现在开始在表格的倒数第二个位置插入单元格,而不是末尾,问题仍然存在 - 首次插入时,一个单元格是“不可见”的,直到它离开屏幕并返回再次开启。可能是什么原因造成的,如何强制将单元格添加到表格后立即绘制?
【问题讨论】:
标签: ios objective-c iphone uitableview cocoa-touch