SwiftUI中的选择器委托滚动方法

问题描述 投票:0回答:1

我的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发生的更改,但是我不确定如何,也无法在WKInterfacePickerPicker的文档中找到任何内容>

关于如何检测滚动事件的开始和结束的任何建议?

我在SwiftUI层次结构中有一个简单的Picker对象:Picker(选择:$ pickerSelection,标签:Text(“选择您的商品”)){ForEach(0 ..

如果它是最后一个值,则可以使用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 uipickerview swiftui wkinterfacepicker
1个回答
0
投票

如果它是最后一个值,则可以使用Combine并订阅pickerSelection。

© www.soinside.com 2019 - 2024. All rights reserved.