小编blc*_*khm的帖子

单击"加载早期项目"按钮时,如何将UITableView的滚动位置设置为上一个位置

我有一个像iOS iMessage详细视图的tableView .而且我在tableView顶部有一个按钮,用于"加载早期消息".

当我将tableView滚动到顶部时,我的按钮出现,在我单击按钮后,我填充了早期记录并重新加载tableView.

当记录在tableView中重新填充时,滚动位置不会改变.

顺便说一句,我试图保持滚动前一个位置值和setcontentoffset前一个CGPoint.但是当我点击按钮时,我意识到滚动位置始终为0.所以,在我setcontentoffset之后,滚动保持在顶部..

我需要将scrollview的位置重定位到上一个区域.

---编辑---

我尝试改进"保留scrollview的先前位置"的方法.

我找到了解决方案,效果很好.我将为所有人分享;

将此添加到.h文件:@property (nonatomic) CGFloat scrollsPreviousLocation;@synthesize scrollsPreviousLocation;.m文件.

现在,这是诀窍:我从底部计算滚动的位置..不是从顶部.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    scrollsPreviousLocation = (self.tableView.contentSize.height - scrollView.contentOffset.y);
}
Run Code Online (Sandbox Code Playgroud)

在计算过程之后,现在我需要将内容偏移设置为先前的位置;

[tableView reloadData];
CGPoint offset = CGPointMake(0,tableView.contentSize.height - scrollsPreviousLocation);
[tableView setContentOffset:offset animated:NO];
Run Code Online (Sandbox Code Playgroud)

xcode objective-c uitableview uiscrollviewdelegate ios

1
推荐指数
1
解决办法
6105
查看次数