【问题标题】:isMomentary on SegmentedPickerStyle SwiftuiisMomentary 上 SegmentedPickerStyle Swiftui
【发布时间】:2021-04-19 10:30:04
【问题描述】:

尝试在 SwiftUI 中设置 isMomentaryPicker SegmentedPickerStyle

UIKit UISegmentedControl 有一个布尔值 isMomentary

寻找如何实现 SwiftUI

【问题讨论】:

    标签: swiftui picker segmentedcontrol


    【解决方案1】:

    这是我如何处理它的一个例子。基本上你让你的选择器将它的选择设置回你想要的任何默认值。在此示例中,我有一个分段选择器,其中包含 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()
                        })
    

    功能

    我实际上在 ViewModel 内部有我的,但在这个例子中它在视图本身上。请务必检查范围并将其放在正确的位置。

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

    【讨论】:

    • 我尝试了这种方法,只是试图避免,因为如果用户希望执行该段的操作,他们将不得不取消选择并重新选择该段。我不赞成强硬,因为这是一个解决方案。谢谢
    • 如果它正在这样做,你会在某处丢失绑定。请注意,在我的示例中,我在操作完成后将范围设置回 2。这应该将 UI 更新回其位置。它可能需要在 DispatchQueue 中
    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2020-04-11
    • 2021-07-07
    • 2019-11-24
    相关资源
    最近更新 更多