在分段PickerStyle Swiftui上使用

在分段PickerStyle Swiftui上使用,swiftui,picker,segmentedcontrol,Swiftui,Picker,Segmentedcontrol,尝试在快捷界面中设置选择器的isMomentary分段选择器样式 UIKitUISegmentedControl有一个BoolisMomentary 正在寻找如何为SwiftUI实现同样的功能,这是我如何处理它的一个示例。基本上,您可以让选择器将其选择设置回您希望的默认值。在本例中,我有一个分段选择器,具有2->50英里的5倍选项。我可以在与该选择相对应的选择之后执行操作;之后,它将返回其默认状态。您可以添加延迟或动画使其更平滑,但这超出了本问题的范围 @State var selectedRa

尝试在快捷界面中设置
选择器的
isMomentary
分段选择器样式

UIKit
UISegmentedControl
有一个Bool
isMomentary


正在寻找如何为SwiftUI实现同样的功能,这是我如何处理它的一个示例。基本上,您可以让选择器将其选择设置回您希望的默认值。在本例中,我有一个分段选择器,具有2->50英里的5倍选项。我可以在与该选择相对应的选择之后执行操作;之后,它将返回其默认状态。您可以添加延迟或动画使其更平滑,但这超出了本问题的范围

@State var selectedRange = 2
//someView {...

                    Picker(selection: selectedRange, label: Text("Search Radius")) {
                        Text("2 miles").tag(0)
                        Text("5 miles").tag(1)
                        Text("10 miles").tag(2)
                        Text("25 miles").tag(3)
                        Text("50 miles").tag(4)
                    }
                    .pickerStyle(SegmentedPickerStyle())
                    .onChange(of: selectedRange, perform: { value in
                        doAction()
                    })
作用 实际上,我的视图模型中有我的视图,但在本例中,它位于视图本身上。只需确保检查范围并将其放置在正确的位置

func doAction() {
    //Do whatever you need to have done.
    switch selectedRange {
        case 0:
            //Do Something.
        default:
            //Do Something
    }
    selectedRange = 2
}

我尝试了这种方法,只是试图避免,因为如果用户希望执行该段的操作,他们必须取消选择并重新选择该段。我会投强硬票,因为这是一个解决办法。谢谢你,如果它这样做的话,你在某处丢失了一个装订。注意,在我的示例中,我在操作完成后将范围设置回2。这会将UI更新回其位置。它可能需要位于DispatchQueue中