在切换 Tab 时或通过 NavigationLink 进入子视图时,如何能记住 ScrollView 之前的滚动位置

136 天前
 Windy418
顶部有两个 tab ,可以切换,用的 SegmentedPickerStyle
下面是一个 ScrollView ,用 LazyVGrid 放了一些卡片样式的数据
比如,当左侧的 tab 的视图滑到第四行 card 的某个位置时,切换到第二个 tab ,然后再切回来,它就会自动回到第一行
如何能让它记住我之前滑动到的地方,使得我每次切换 tab ,都可以保持上一次的位置继续向下浏览
有没有大佬知道?

这个问题在我在一个 ScrollView 视图中,使用 NavigationLink 进入子视图,再返回时,也会遇到,有时候位置会发生变化
1241 次点击
所在节点    iDev
4 条回复
iOCZS
136 天前
最好是有简单的 demo 可以复现,一般来说,避免视图重建可以解决滚动位置丢失的问题
okakuyang
136 天前
理论上不会出现这种情况,如果非要实现需求,可以记录滚动坐标,视图倒退的时候自动给它无动画模式滚到指定坐标
Bananana
135 天前
印象里不会重置滚动位置的,有代码发出来看看么
Windy418
135 天前
我好像发现问题原因了,之前我的代码套嵌
是这样的:ScrollView -> ForEach -> Vstack -> Text, LazyVGrid
我改成了:ScorllView -> LazyVGrid -> Section -> ForEach, header
好像就没有这个问题了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1115876

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX