在一个序列中,我只更新列表数据(NSMUtableArray)中的特定对象,一旦更新了它的值,为了进行 GUI 更新,我重新加载了完整的表,如下所示......
[table reloadData];
它工作得很好,但是在效率方面,当我滚动时它有点悬,有没有办法只更新一个特定的单元格而不重新加载整个表?
谢谢。
在一个序列中,我只更新列表数据(NSMUtableArray)中的特定对象,一旦更新了它的值,为了进行 GUI 更新,我重新加载了完整的表,如下所示......
[table reloadData];
它工作得很好,但是在效率方面,当我滚动时它有点悬,有没有办法只更新一个特定的单元格而不重新加载整个表?
谢谢。
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
用这个
你可以用这个..
NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
//You can add one or more indexPath in this array...
[tblview reloadRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
您可以通过 -
UITableViewCell *cell = [table cellForRowAtIndexPath:indexPath];
现在根据数据数组中的对象更改其相关值。它应该反映在表格中。希望这可以帮助。
您可以使用 index path 重新加载特定的图像行。
[mainTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationNone];
在进行 GUI 更新时,最好使用 reloadData 而不是使用任何其他方法。reloadData 是在您的情况下更新的最佳方式,UITableView
因为它避免了不一致。您可以做的另一件事是,您可以在您的条件中添加一个条件,cellForRowAtIndexPath
并让执行仅针对已修改的单元格进行。
如果您只是添加一个项目,并且希望将其添加到表格中,则可以手动将其插入到 UITableView 中,这是一个示例:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_directions.count-1 inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:YES];