gpt4 book ai didi

ios - SwiftUI - ScrollViewReader 的 scrollTo 不滚动

转载 作者:行者123 更新时间:2023-12-03 18:36:16 24 4
gpt4 key购买 nike

我有一个简单的 SwiftUI 当用户单击按钮时,我想滚动到一行的列表。我从 hackingwithswift 复制了这段代码.它应该工作,但它不工作。

struct ContentView: View {
var body: some View {
ScrollViewReader { proxy in
VStack {
Button("Jump to #50") {
proxy.scrollTo(5, anchor: .top)
}

List(0..<100) { i in
Text("Example \(i)")
.id(i)
}
}
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

我在模拟器和物理设备上的 iOS 14.2 上对其进行了测试。
我读了它的 documentation ,但没有太多信息。那么如何滚动到一行,例如第 50 行呢?

最佳答案

ScrollViewReader仅适用于:

  • 明确使用 ScrollView
  • 可识别收藏列表

  • 它不适用于 ListRange&lt;Int>除非你设置它的 id明确地。
    明确设置 id。
    // List(0..<100, id: \.self)

    struct ContentView: View {
    var body: some View {
    ScrollViewReader { proxy in
    VStack {
    Button("Jump to #50") {
    proxy.scrollTo(5, anchor: .top)
    }

    List(0..<100, id: \.self) { i in
    Text("Example \(i)")
    .id(i)
    }
    }
    }
    }
    }

    // ForEach(0..<50000, id: \.self)

    struct ContentView: View {
    var body: some View {
    ScrollView {
    ScrollViewReader { proxy in
    LazyVStack {
    ForEach(0..<50000, id: \.self) { i in
    Button("Jump to \(i+500)") {
    proxy.scrollTo(i+500, anchor: .top)
    }
    Text("Example \(i)")
    .id(i)
    }
    }
    }
    }
    }
    }

    关于ios - SwiftUI - ScrollViewReader 的 scrollTo 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64976866/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com