一个类似于 SwiftUI 的 NavigationView 的组件,它提供了一个方便的接口来显示模态视图。
使用 Swift Package Manager 将依赖项添加到您的项目中:https://github.com/diniska/modal-view
导入依赖项
import ModalView
使用 ModalPresenter 和 ModalLink,就像您使用 NavigationView 和 NavigationLink 一样
struct ContentView: View {
var body: some View {
ModalPresenter {
ModalLink(destination: Text("Modal View")) {
Text("Main view")
}
}
}
}
要向模态视图添加一个“关闭”按钮,我们可以使用 ModalLink 提供的 dismiss 闭包
struct ContentView: View {
var body: some View {
ModalPresenter {
ModalLink(destination: { dismiss in
Button(action: dismiss) {
Text("Dismiss")
}
}) {
Text("Main view")
}
}
}
}
将上面的代码中的目标视图移动到一个单独的结构体是一种推荐的重构方式,因为模态视图通常包含的内容不仅仅是文本或按钮。
struct ContentView: View {
var body: some View {
ModalPresenter {
ModalLink(destination: MyModalView.init(dismiss:)) {
Text("Main view")
}
}
}
}
struct MyModalView: View {
var dismiss: () -> ()
var body: some View {
Button(action: dismiss) {
Text("Dismiss")
}
}
}
了解更多:使用 SwiftUI 显示模态视图