我的 SwiftUI 层次结构中有简单的 Picker
对象:
Picker(selection: $pickerSelection, label: Text("Select your item")) {
ForEach(0 ..< items.count) {
Text("\(self.items[$0].valueCode)")
.tag($0)
}
}
我在 WatchOS 应用程序中使用了一个可滚动的选择器,它工作得很好。我什至可以免费获得 Digital Crown 旋转功能。
我想做的是检测滚动何时开始,尤其是结束(获取最后选择的值并执行和操作)
我想我需要实现某种委托(delegate)方法来读取 Picker 发生的变化,但我不确定如何,也无法在 WKInterfacePicker
的文档中找到任何内容或只是 选择器
关于如何检测滚动事件的开始和结束有什么建议吗?
最佳答案
如果它是关于最后一个值,您可以使用 Combine 并订阅 pickerSelection。
class ViewModel: ObservableObject {
private var disposables = Set<AnyCancellable>()
@Published var pickerSelection = 0
init() {
let cc = $pickerSelection
.sink(receiveValue: { value in
print(value)
})
cc.store(in: &disposables)
}
}
struct ContentView: View {
@ObservedObject var mm = ViewModel()
var items = [1,2,3,4,5,6,7,8,9,10]
var body: some View {
VStack {
Text("Hello, World!")
Picker(selection: self.$mm.pickerSelection, label: Text("Item:")) {
ForEach(0 ..< items.count) {
Text("Item \($0)")
.tag($0)
}
}
}
}
}
关于swift - SwiftUI 中的 Picker 委托(delegate)滚动方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58218264/