如何在UITableView中将单元格插入顶部而不移动到顶部偏移

时间:2015-11-26 02:03:32

标签: ios uitableview

我们可以将单元格插入UITableView或UICollectionView,如果单元格将插入到中间或底部,我们将感觉平滑并保持当前偏移。但是当我在顶部插入时,tableview或UICollectionView将自动移动到Offset零,意味着我不会停留在我想要的当前可见单元格。我该如何实现它,它是原生功能还是我们必须制作一些复杂的代码? 我看到FB messenger或Skype应用程序,当滚动到顶部时,将插入新消息而不更改当前可见视图。有人建议给我一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果使用master-Detail应用程序创建一个新的简单项目,您可以看到插入它时不会滚动到顶部内容偏移量只会改变一点(等于新行高度),即使您在中间,顶部或底部插入顶部。 。它使用简单的代码,如

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

现在即使你不想要那么小的滚动this也是不错的解决方案

//just need check if you already on the top of the tableview that may be first few rows depend on your row height 
if(self.tableView.contentOffset.y > ONE_OR_X_ROWS_HEIGHT_YOU_DECIDE
{

    self.delayOffset = self.tableView.contentOffset;
    self.delayOffset = CGPointMake(self.delayOffset.x, self.delayOffset.y+ insertedRowCount * ONE_ROW_HEIGHT);

    //insert your row here 

    [self.tableView setContentOffset:self.delayOffset animated:NO];    


}else
{
    //insert your row here

}