我有一个像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)