ModalView

Swift 5.1 Xcode 11 iOS 13.0 iPadOS 13.0 MacOS 10.15 Tests

一个类似于 SwiftUI 的 NavigationView 的组件,它提供了一个方便的接口来显示模态视图。

如何使用

步骤 1

使用 Swift Package Manager 将依赖项添加到您的项目中:https://github.com/diniska/modal-view

步骤 2

导入依赖项

import ModalView

步骤 3

使用 ModalPresenterModalLink,就像您使用 NavigationViewNavigationLink 一样

struct ContentView: View {
    var body: some View {
        ModalPresenter {
            ModalLink(destination: Text("Modal View")) {
                Text("Main view")
            }
        }
    }
}

结果

Presenting modal view with SwiftUI

附加信息

要向模态视图添加一个“关闭”按钮,我们可以使用 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 显示模态视图