我尝试重新实现分段控制器,因为它们在Xcode 11 beta 5中已过时。花了一些时间,但最终得到了我想要的外观。但是,当我用onTapGesture()替换tapAction时,选择器停止工作。
以下代码显示了问题。注释掉pickerStyle会得到一个轮式选择器,它可以与onTapGesture()一起使用。
import SwiftUI
var oneSelected = false
struct ContentView: View {
@State var sel = 0
var body: some View {
VStack {
Picker("Test", selection: $sel) {
Text("A").tag(0)
Text("B").tag(1)
Text("C").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
Picker("Test", selection: $sel) {
Text("A").tag(0)
Text("B").tag(1)
Text("C").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
.onTapGesture(perform: {
oneSelected = (self.sel == 1)
})
Text("Selected: \(sel)")
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
我希望Picker().pickerStyle(SegmentedPickerStyle())的工作方式与SegmentedController()相同。