swi*_*ode 9 scroll objective-c uitableview ios
我UITableView有一堆重复使用的细胞,当我对其中一个水龙头,它带我到另一个视图控制器(通过推送赛格瑞),显示该单元格的细节(我们说这是一个项目,所以它会显示有关项目的详细信息 - 名称,价格,图像等......).当我弹出那个视图控制器时(通过点击后退按钮),UITableView有一个奇怪的行为:
a)如果它一直滚动到底部,它将自动滚动(大约50点),使最后一个单元格几乎不可见,所以我必须再次向下滚动.我的牢房全高60分.
b)滚动条总是显示然后消失,表示某些东西正在移动UITableView(虽然如果没有滚动到底部,内容将不会自动移动).
这发生在UITableView我的应用程序中的多个.我没有强制在viewWillAppear中重新加载表视图,所以我不明白发生了什么.从服务器加载后,我的内容是静态的(除非用户更改它,然后执行重新加载).但只是显示项目的详细信息并弹出该VC不会改变表格视图中的任何内容.
编辑:好的,我已经弄清楚问题是什么:我UIToolbar在推动那个segue时隐藏了一个.如果我把它总是可见的(我不希望),它仍然显示滚动条在我的表视图弹出,但如果在最后几排不滚动表视图时动画.
将以下内容添加到viewDidLoad.
self.automaticallyAdjustsScrollViewInsets = NO;
Run Code Online (Sandbox Code Playgroud)
这解决了我在导航回视图控制器后向下移动的问题.
我设法解决了第一个问题。看起来 tableview 没有考虑到 的 44 个点UIToolbar。
将表视图偏移量保存在prepareForSegue:(将其保存在CGPoint属性中)
self.tableViewScrollOffset = self.tableView.contentOffset;
Run Code Online (Sandbox Code Playgroud)
然后,在 中viewWillAppear:检查是否已被修改。如果是这样,请恢复它。
if(self.tableView.contentOffset.y != self.tableViewScrollOffset.y) {
[self.tableView setContentOffset:self.tableViewScrollOffset];
self.tableViewScrollOffset = CGPointZero;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5689 次 |
| 最近记录: |