【发布时间】:2019-02-19 09:34:20
【问题描述】:
scrollview - 内容视图 - 1) 图像,2) 选项卡,3) 堆栈视图
以上是我的故事板安排。 标签实际上是集合视图。标签下方是堆栈视图 (也在内容视图内)。当我单击每个选项卡时,我会在 didSelect 处发送所选选项卡的索引。它将调用具有此流程的 refreshData 函数:堆栈视图中的 当前子视图 将被删除(使用 vc.mainStack .subviews.forEach({ $0.removeFromSuperview() })) 并将根据所选标签的索引重新加载另一个子视图。 图像的位置将保持不变,位于页面顶部。但是,每次我单击选项卡时,屏幕总是会滚动到顶部。如何保持滚动位置(在单击另一个选项卡之前),以便当我单击新选项卡时,它将保持在相同的滚动位置?
self.yContentOffset = scrollView.contentOffset.y
已经在scrollViewDidScroll里面添加了上面的代码
vc.scrollView.contentOffset.y = self.yContentOffset
在删除堆栈中的所有子视图后添加上面的代码,然后我调用新数据(用于子视图)。还尝试在调用新的子视图后添加代码,但两者都不起作用。有谁知道如何做到这一点的逻辑?
【问题讨论】:
-
您需要提供更多信息...当您说 "tabs" 时,您是什么意思?那些只是排列成看起来像标签的按钮吗?您是否正在删除堆栈视图的当前
.arrangedSubviews并同时添加新的?或者,因为你说 "then i call the new data(for subviews)" 你的意思是你正在调用一个单独的操作来检索数据并且 then 添加新的子视图? -
嗨@DonMag,很抱歉缺少信息。我只是编辑我的问题。希望你能帮我解决这个问题。
标签: ios swift uiscrollview scrollview