我有一个 UITableView
它的导航栏中有一个分段控件。我使用同一个 TableView 根据分段控件的选定索引显示 3 组不同的数据。我现在试图保留每个分割选项的滚动位置,这样看起来每个分割选项都有一个表格(即每个选择的结果都有独立的滚动位置)。
为此,我存储了一个 CGPoint
每个状态的变量,设置为contentOffset
when the selected segment index changes.该变量用于在段更改时设置 TableView 的内容偏移量。
然而,这似乎是contentOffset
当所选段索引更改而没有对表中的位置进行任何可见更改时,值就会发生变化。就像内容偏移量的 0 位置在移动,这使得我的存储值现在是错误的。
当我的 Controller 包含以下方法时:
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...
}
我在加载 View 时记录了以下内容:
(0.0, 0.0)
但在更改段后我得到:
(0.0, -64.0)
所有状态都显示表格 View 滚动到完全相同的位置,即 - 在顶部。
此行为使我无法正确存储滚动位置,因为内容偏移的“含义”似乎正在发生变化。
编辑:内容偏移实际上是在 viewDidLoad()
之间调整的和 viewDidAppear()
,很可能是由于内容插入。所以我现在第一次存储内容偏移值viewDidAppear()
被称为。
最佳答案
这个问题通常是由 View Controller 上的属性引起的。将其设置为 false
应该可以修复它。
self.automaticallyAdjustsScrollViewInsets = false
也可以从 Storyboard 中设置。只需选择 View Controller 并取消选中 Adjusts scroll view insets
。
关于ios - 为什么在使用分段控件时 UITableView contentOffset 会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583593/