一个带有文本字段的 SwiftUI 警告框,适用于 iOS 13+ 和 tvOS 13+。
由于苹果即将在 iOS 16 中引入文本字段作为警告框操作,因此这是一个适用于旧版本的良好替代方案。
你可以通过将其添加为包依赖项,将 TextFieldAlert 添加到 Xcode 项目中。
https://github.com/sochalewski/TextFieldAlert
。TextFieldAlert 通过 View
扩展公开。
func textFieldAlert(
title: String?,
message: String?,
textFields: [TextFieldAlert.TextField],
actions: [TextFieldAlert.Action],
isPresented: Binding<Bool>
)
你可以像下面这样在你的代码中使用它
struct ExampleView: View {
@State var isPresented = false
@State var text1 = ""
@State var text2 = ""
var body: some View {
VStack {
Button {
isPresented = true
} label: {
Text("Alert")
}
Text(text1)
Text(text2)
}
.textFieldAlert(
title: "Title",
message: "Message",
textFields: [
.init(text: $text1),
.init(text: $text2)
],
actions: [
.init(title: "OK")
],
isPresented: $isPresented
)
}
}
更高级的用法(包括将责任转移到视图模型,一些自定义和有条件地启用操作按钮)在示例应用程序中提供。
Piotr Sochalewski, sochalewski.github.io
TextFieldAlert 的灵感很大程度上来自于 tanzolone 在 StackOverflow 上的 回答。
TextFieldAlert 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。