TextFieldAlert

一个带有文本字段的 SwiftUI 警告框,适用于 iOS 13+ 和 tvOS 13+。

由于苹果即将在 iOS 16 中引入文本字段作为警告框操作,因此这是一个适用于旧版本的良好替代方案。

要求

安装

你可以通过将其添加为包依赖项,将 TextFieldAlert 添加到 Xcode 项目中。

  1. File 菜单中,选择 Add Packages…
  2. 在包仓库 URL 文本字段中输入 https://github.com/sochalewski/TextFieldAlert
  3. 将包添加到你的应用目标。

用法

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 文件。