And*_*net 4 uitableview uiscrollview uikit ios swift
我有一个UITableView在其导航栏中具有分段控件的控件。我使用相同的表格视图,以根据分段控件的选定索引显示3组不同的数据。我现在正在尝试保留每个段选项的滚动位置,以便似乎每个段选项都有一个表(即,每个选择的结果具有独立的滚动位置)。
为此,我CGPoint为每个状态存储一个变量,该变量设置为contentOffset所选段索引更改时的。该变量用于设置段更改后表格视图的内容偏移量。
但是,contentOffset当选定的段索引更改而表中的位置没有任何可见的更改时,值似乎会更改。就像内容偏移量的0位置正在移动,这使我的存储值现在出错了。
当我的控制器包含以下方法时:
override func viewDidLoad() {
// set up the view here...
print(tableView.contentOffset)
}
@IBAction func selectedSegmentChanged(sender: AnyObject) {
print(tableView.contentOffset)
// code to change the data shown in the table view...
}
Run Code Online (Sandbox Code Playgroud)
当视图加载时,我得到以下记录:
(0.0,0.0)
但更改细分后,我得到:
(0.0,-64.0)
所有状态都显示表格视图滚动到完全相同的位置,即-在顶部。
这种行为使我无法正确存储滚动位置,因为内容偏移量的“含义”似乎正在改变。
编辑:内容偏移量实际上是在viewDidLoad()和之间调整的viewDidAppear(),很可能是由于内容插入。因此,我现在在第一次viewDidAppear()调用时存储内容偏移值。
此问题通常是由视图控制器上的属性引起的。将其设置为false应修复它。
self.automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)
也可以从情节提要中进行设置。只需选择视图控制器,然后取消选中Adjusts scroll view insets。
| 归档时间: |
|
| 查看次数: |
5927 次 |
| 最近记录: |