ios UITableView在删除和插入行时闪烁
我对UITableView有问题。 我有一个最多20个元素的ringbuffer。 我将此缓冲区作为源添加到tableview。 当我添加一个项目时,我调用ios UITableView在删除和插入行时闪烁,ios,objective-c,flash,uitableview,Ios,Objective C,Flash,Uitableview,我对UITableView有问题。 我有一个最多20个元素的ringbuffer。 我将此缓冲区作为源添加到tableview。 当我添加一个项目时,我调用 table.BeginUpdate(); tableMessges.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(buffer.Count-1, 0) }, UITableViewRowAnimation.None); buffer.Add(item); tableMes
table.BeginUpdate();
tableMessges.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(buffer.Count-1, 0) }, UITableViewRowAnimation.None);
buffer.Add(item);
tableMessges.EndUpdates();
这工作做得很好。
现在,当缓冲区已满时,我将删除第一个表行以及缓冲区中的第一个对象,插入一个新行并向缓冲区添加一个新对象。
当我做这个程序时,每秒钟都要慢一点,看起来很好。
我只想在表中最多有20个项目。
但是当我调用这个程序时,比如说,每100毫秒,表格视图就会闪烁很多。
是否有机会减少闪烁
这是缓冲区满时的代码
table.BeginUpdates();
buffer.AddMessage(canMessage);
if(buffer.count >= buffer.capacity)
{
table.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(buffer.count-1, 0) }, UITableViewRowAnimation.None);
table.DeleteRows(new NSIndexPath[] { NSIndexPath.FromRowSection(0, 0) }, UITableViewRowAnimation.None);
}
else
{
table.InsertRows(new NSIndexPath[] { NSIndexPath.FromRowSection(buffer.NumberOfRows-1, 0) }, UITableViewRowAnimation.None);
}
table.EndUpdates();
我建议您直接向UITableView控件插入和删除行,而应该操作与之绑定的数据源并重新加载表数据 对于优化和特定的数据重新加载,您可以查看For UITableView控件。例如:
从您手头的代码来看,您似乎有某些细节可以使用此方法。您是否尝试过处理其数据源,而不是直接向UITableView添加内容?更新数据源并调用reloadData。那就不应该了。没错,但是“重新加载数据”是一种很重的方法,它会重新加载每个单元格