有人知道如何解决此错误吗?否则,我可能会创建自己的警报模式?看来这是一个老错误-至少是从macOS 10.15.3起,现在是10.15.5,至今仍未解决。有趣的是,在按下查看后的最初几毫秒内,它可以正确呈现-仅显示2个按钮,然后中断。 Alert with multiple buttons
fileprivate func foo() -> Alert {
return Alert(title: Text("Foo"),
message: Text("Are you sure you want to ..."),
primaryButton: .default(Text("Yes"), action: {
self.fooAction()
}), secondaryButton: .default(Text("No")))
}
并称为:
.alert(isPresented: $isShowingFoo, content:{
foo()
})
答案 0 :(得分:0)
我记得过去也有同样的问题,但是现在它显示了预期的按钮。我将Xcode 11.5用于mac催化剂应用,目标是ios 13.5和mac 10.15。请注意,这不是macOS应用。
我进行了以下测试,显示了预期的按钮。但是我注意到,如果我多次单击按钮,一段时间后应用程序就会崩溃。
struct ContentView: View {
@State var isShowingFoo = false
var body: some View {
VStack {
Button(action: {
self.isShowingFoo.toggle()
}) {
Text("Press to show alert")
}
}.alert(isPresented: $isShowingFoo) {
foo()
}
}
fileprivate func foo() -> Alert {
return Alert(title: Text("Foo"),
message: Text("Are you sure you want to ..."),
primaryButton: .default(Text("Yes"), action: {
self.fooAction()
}), secondaryButton: .default(Text("No")))
}
func fooAction() {
print("---> Yes fooAction")
}
}
我也尝试过
secondaryButton: .default(Text("no"), action: {})
答案 1 :(得分:0)
.alert(isPresented: $jsonData.didFail, content: {
Alert(title: Text("Network Error"),
message: Text(jsonData.errorMessage),
dismissButton: .default (Text("OK")))
})
将该代码放在HStack或VStack之类的容器的关闭块中。 didFail变量必须是STATE变量或BINDING。请记住,当您将其挂接到警报时,警报视图将切换它。因此,除了显示警报外,请勿在您的逻辑中其他任何地方使用它。
使用上面的代码,我仍会从MacOS 10.15.6的NavigationView内获取重复的按钮,但可以按预期在iPhone和iPadOS上运行。