【发布时间】:2023-03-06 19:18:01
【问题描述】:
我有一个可以正常工作的选择器,直到显示和关闭 fullScreenCover 或工作表。有谁知道这个示例代码有什么问题,或者有解决方法吗?
我也尝试过使用 self.presentation.wrappedValue.dismiss() 关闭工作表,但结果相同。
示例 gif:https://i.stack.imgur.com/zmcmv.gif
代码:
import SwiftUI
struct ContentView: View {
@State var selectedFilterStatus = ActiveStatus.active
@State var showDetail = false
var body: some View {
NavigationView {
VStack {
Button(action: {
showDetail.toggle()
}, label: {
Text("Detail popup")
})
Picker("\(selectedFilterStatus.title)", selection: $selectedFilterStatus) {
Text(ActiveStatus.active.title).tag(ActiveStatus.active)
Text(ActiveStatus.inactive.title).tag(ActiveStatus.inactive)
}
}
.fullScreenCover(isPresented: $showDetail, content: {
MyDetailsView(presenting: $showDetail)
})
}
.navigationTitle("Main")
}
}
struct MyDetailsView: View {
@Binding var presenting: Bool
var body: some View {
VStack {
Text("Hello from details!")
Button(action: {
presenting.toggle()
}, label: {
HStack {
Image(systemName: "chevron.left")
Text("Back")
}
})
}
}
}
enum ActiveStatus: String, CaseIterable, Identifiable {
case active
case inactive
var id: String { self.rawValue }
}
extension ActiveStatus {
var title: String {
switch self {
case .active:
return "Active for sale"
case .inactive:
return "Inactive"
}
}
}
【问题讨论】:
-
在我看来确实是一个 SwiftUI 错误。您是否向 Apple 提交过反馈?
-
我也看到了同样的问题。我还对代码进行了一些操作,发现在
Picker中使用ForEach表现出相同的行为。此外,如果您在导航到详细信息之前未进行选择器选择,则它可以正常工作。只有在进行选择器选择然后导航选择器失败之后。请在提交此文件时发布您的雷达号。 -
@jnpdx 是的,我同意。它看起来像一个错误。我还没有向苹果提交。我希望也许有人知道解决方法......
-
@Yrb,我也注意到了,但我不明白为什么......
-
一致认为这是一个错误。不要试图理解它为什么在做它正在做的事情。只需提交报告,并张贴编号,以便我们参考。你找到了,你会得到第一个 dibs。