SwiftUI PickerView 与工作回调如何?

Posted

技术标签:

【中文标题】SwiftUI PickerView 与工作回调如何?【英文标题】:SwiftUI PickerView with working CallBack HOW? 【发布时间】:2019-10-29 11:35:14 【问题描述】:

好的-

我想要一个选择器视图来选择一个运算符:“=","" 此运算符将作为绑定发送:

@Binding var op:String

我的选择器:

Picker(selection: binding, label: Text("Query Type")) 
            ForEach(0..<self.operators.count)  index in
                Text(self.operators[index]).tag(index)
            
        .pickerStyle(SegmentedPickerStyle())
            .padding()

现在我与回调的绑定:

let binding = Binding<Int>(
    get: 
        return self.pickerSelection
    ,
    set: 
        //pickerSelection = $0
        print("SETTTING: \($0)")
        self.op = self.operators[self.pickerSelection]
        self.queryCallback()

    )

所以,我可以完美地设置选择器。但是,当我回去编辑我的数据时,选择器永远不能选择现有的绑定运算符,比如“

我在 init 中添加了一个: pickerSelection = operator.firstIndex(opValue)

但是这只会启动一个无限循环,因为 pickerSelection 是一个 @State 变量

谁有解决办法?

【问题讨论】:

【参考方案1】:

这是一种行之有效的方法。它使用 Combine 来制作一个可观察的,可以用来触发所需的事件。我还看到了 Combine 对 SwiftUI 有多么有用

https://***.com/a/57519105/810300

【讨论】:

以上是关于SwiftUI PickerView 与工作回调如何?的主要内容,如果未能解决你的问题,请参考以下文章

PickerView 被禁用并且在 SwiftUI 中不起作用

SwiftUI:如何处理 BLE 响应并显示新值

检查pickerView SwiftUi中的选择

Swift - 无法使 PickerView 库正常工作

将数据从 SwiftUI 传递到 UIKit 的回调

向 SwiftUI Picker 添加回调