gpt4 book ai didi

popover - 有没有人更新 SwiftUI Popovers 以在 Xcode beta-3 中工作?

转载 作者:行者123 更新时间:2023-12-03 21:02:06 27 4
gpt4 key购买 nike

更新到 Xcode beta-3,Popover 被弃用了......有一段时间试图弄清楚如何让它再次工作!?!?

  • 它不再“弹出”,而是从底部向上滑动。
  • 它不再正确定位或调整大小,占据整个屏幕。
  • 一旦被解雇,它就再也不想出现。

  • 这是旧代码,效果很好......
    struct ExerciseFilterBar : View {
    @Binding var filter: Exercise.Filter

    @State private var showPositions = false

    var body: some View {
    HStack {
    Spacer()
    Button(action: { self.showPositions = true } ) {
    Text("Position")
    }
    .presentation(showPositions ? Popover(content: MultiPicker(items: Exercise.Position.allCases, selected:$filter.positions),
    dismissHandler: { self.showPositions = false })
    : nil)
    }
    .padding()
    }
    }

    这是新代码...
    struct ExerciseFilterBar : View {
    @Binding var filter: Exercise.Filter

    @State private var showPositions = false

    var body: some View {
    HStack {
    Spacer()
    Button(action: { self.showPositions = true } ) {
    Text("Position")
    }
    .popover(isPresented: $showPositions) {
    MultiPicker(items: Exercise.Position.allCases, selected:self.$filter.positions)
    .onDisappear { self.showPositions = false }
    }
    }
    .padding()
    }
    }

    我最终使用 PresentationLink 只是为了让我可以继续处理其他所有事情......
    struct ExerciseFilterBar : View {
    @Binding var filter: Exercise.Filter

    var body: some View {
    HStack {
    Spacer()
    PresentationLink(destination: MultiPicker(items: Exercise.Position.allCases, selected:$filter.positions)) {
    Text("Position")
    }
    }
    .padding()
    }
    }

    就测试而言,它有效,但它不是弹出窗口。

    感谢您的任何建议!

    顺便说一句,这段代码正在 iPad 模拟器中。

    最佳答案

    在 OSX 上,下面的代码工作正常

    struct ContentView : View {

    @State var poSelAbove = false
    @State var poSelBelow = false
    @State var pick : Int = 1

    var body: some View {

    let picker = Picker(selection: $pick, label: Text("Pick option"), content:
    {
    Text("Option 0").tag(0)
    Text("Option 1").tag(1)
    Text("Option 2").tag(2)
    })

    let popoverWithButtons =
    VStack {
    Button("Not Dismiss") {
    }
    Divider()
    Button("Dismiss") {
    self.poSelAbove = false
    }
    }
    .padding()

    return VStack {
    Group {
    Button("Show button popover above") {
    self.poSelAbove = true
    }.popover(isPresented: $poSelAbove, arrowEdge: .bottom) {
    popoverWithButtons
    }

    Divider()
    Button("Show picker popover below") {
    self.poSelBelow = true
    }.popover(isPresented: $poSelBelow, arrowEdge: .top) {
    Group {
    picker
    }
    }
    }
    Divider()
    picker
    .frame(width: 300, alignment: .center)
    Text("Picked option: \(self.pick)")
    .font(.subheadline)
    }
    // comment the line below for iOS
    .frame(width: 800, height: 600)
    }

    在 iOS (iPad) 上,弹出窗口将以奇怪的透明全屏模式出现。我不认为这是故意的。我已将该问题添加到我现有的错误报告中。

    关于popover - 有没有人更新 SwiftUI Popovers 以在 Xcode beta-3 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905648/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com