SwiftyAlert
是一个轻量级、多平台、易于使用的 SwiftUI
包,用于错误处理。它与 SwiftUI Environment
集成。
在 Xcode 的 App 项目或框架中
选择菜单:File → Swift Packages → Add Package Dependency...
输入 URL:https://github.com/chocoford/SwiftyAlert
或者在 Swift Package 中,将其添加到 Package.swift 的 dependencies 中
let package = Package(
...
dependencies: [
.package(url: "https://github.com/chocoford/SwiftyAlert.git", from: "1.0.0"),
],
targets: [
.target(
...
dependencies: [
...
"SwiftyAlert"
],
...
)
]
)
import SwiftyAlert
例如,您可以直接在 YourApp.swift
中注入 environments
@main
struct YourApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.swiftyAlert() // <-- inject environments here.
}
}
}
struct ContentView: View {
@Environment(\.alert) private var alert // <-- use with @Environment
var body: some View {
Button {
alert(title: "Alert") {
Button {
...
} label: {
Text("Alert action")
}
} message: {}
// or just use with error
do {...} catch {
alert(error)
}
} label: {
Text("Alert")
}
}
}
此外,如果您的项目已经导入了 AlertToast
,您可以使用相同的方式使用 alertToast
!
import AlertToast
import SwiftyAlert
struct ContentView: View {
@Environment(\.alertToast) private var alertToast
var body: some View {
Button {
do {...} catch {
alertToast(error)
}
} label: {
Text("Toggle alertToast")
}
}
}
您可以额外应用 .swiftyAlert(...)
使 alertToast 在 sheet
或 fullscreenCover
中显示。
...
.sheet(isPresented: $showSheet) {
SheetView()
.swiftyAlert() // <-- inject for sheet view to display alertToast
}
Undefined symbols:...
只需要 Reset Package Caches
并重新构建即可。问题将会消失。elai950 - AlertToast: Create Apple-like alerts & toasts using SwiftUI