SwiftUI中管理alert的简便方法
本文价值与收获
看完本文后,您将能够作出下面的界面
Jietu20200608-124536@2x.jpg
Jietu20200608-124558.gif
基础
要在SwiftUI中显示警报,请使用alert修饰符。我们可以通过isPresented实现控制alert显示和退出的功能。
struct MyView: View {
@State private var isAlertActive = false
private let alert = Alert(title: Text("Hello, world!"))
var body: some View {
Button("Show sheet", action: showSheet)
.alert(isPresented: $isAlertActive, content: { alert })
}
}
}
很容易,对吧?嗯,这个基本示例是,但是我认为一旦要从同一屏幕上呈现多个警报或在整个应用中重复使用警报,就很难进行管理。
一个问题是,您到处都在重复isAlertActive逻辑。每当您从多个视图中呈现同一警报时,还必须复制警报生成逻辑。下面我们就来看看如何解决这个问题
AlertContext来解决这个问题
我们可以通过AlertContext类中来重用这些特定于警报的逻辑: