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

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

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

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

https://study.congcong.us/t/1115876

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

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

© 2021 V2EX