小编Göt*_*ötz的帖子

SwiftUI - .scrollPosition 修饰符不更新绑定属性

我尝试使用按钮将 ScrollView 设置为最顶部的元素。因此,新的.scrollPosition()修饰符应该会派上用场。我无法让它工作。在以下示例中,当单击堆栈底部的项目或按钮时,滚动将起作用。但滚动时该值不会更新。您可以通过滚动到底部、单击“滚动到顶部”按钮并向下滚动来重现该行为。第二次,什么也没有发生,因为值仍然是 1。我做错了什么,还是我对修饰符的期望错误?文档是这样说的: https://developer.apple.com/documentation/swiftui/view/scrollposition(id:anchor:)

\n
//\n//  ContentView.swift\n//  Test\n//\n//  Created by Sebastian G\xc3\xb6tte on 23.09.23.\n//\n\nimport SwiftUI\n\nstruct ContentView: View {\n    \n    @State private var scrollViewPosition: Int?\n    \n    var body: some View {\n        ScrollView(.vertical) {\n            VStack(spacing: 32) {\n                ForEach(1..<21) { item in\n                    Text("I am item no. \\(item)")\n                        .id(item)\n                    \n                        .frame(maxWidth: .infinity)\n                        .padding()\n                        .background(.purple)\n                        .cornerRadius(4)\n                    \n                        .onTapGesture {\n                            withAnimation {\n                                scrollViewPosition = item\n                            }\n                        }\n                }\n                \n                Button("Scroll to top", action: {\n                    withAnimation {\n                        scrollViewPosition = 1\n                    }\n                })\n            }\n            .scrollTargetLayout()\n …
Run Code Online (Sandbox Code Playgroud)

swiftui

5
推荐指数
1
解决办法
1210
查看次数

标签 统计

swiftui ×1