【发布时间】:2021-11-20 00:55:01
【问题描述】:
我正在尝试使用 confirmationDialog 修饰符(iOS 15 中的新功能)。我想我可以像sheet 一样使用它,但似乎你必须将它附加到屏幕某处的一个小视图上(至少在我的 iPad 上)。有没有办法让一个在屏幕中间显示为未附加?
例如,这不在 iPad 上工作。对话框是不可见的。
struct ContentView: View {
@State var showConf = false
var body: some View {
VStack(spacing: 0) {
Spacer(minLength: 20)
Button("Test Conf. Dialog") {
showConf = true
}
Spacer()
}
.frame(maxWidth: .infinity)
.background(Color.blue.opacity(0.3))
.confirmationDialog("Test", isPresented: $showConf) {
Button("Yes") {
print("Yes!")
}
}
}
}
【问题讨论】:
-
confirmationDialog是一个popoverper Documentation 并且 SwiftUI 或 UIKit 中的弹出框必须附加到sourceView或者你得到一些错误说它没有附加。您可能正在寻找Alert与confirmationDialog。效果/错误通常只在 iPad 或 Mac 中可见。 -
好的,谢谢。我想要
alert或sheet。alert和confirmationDialog似乎都将“消息”部分限制为单个文本。我想要更多,所以可能需要sheet。不幸的是,在 iPad 上控制工作表大小似乎仍然很痛苦。 -
如果您创建
CustomAlertstruct/class并使用.alert(item:),您可以将Alert内容更改为您想要的任何内容。看到这个SO question我为另一个用例写的 -
Alert结构已弃用。如果我使用将消息作为参数的alert(...)修饰符,并且我传递了一个VStack,那么它会忽略堆栈中除了第一个Text之外的所有内容。这就是我现在在运行 iPadOS 15 的 iPad 上看到的。
标签: swiftui