在 swiftui 中显示导航到另一个视图的模态视图

Present modal view on navigation to another view in swiftui

如果这是一个重复的问题,请告诉我。

我正在开发一个带有照片选择器的应用程序。我在视图 A 上,上面有一个 + 按钮。当我点击 + 时,我想导航到视图 B。导航后,我想在视图 B 内自动显示照片选择器视图。我无法弄清楚如何显示 sheet在迅捷。 在 UIKit 中,在 viewcontroller B 的 viewdidappear 上,我将呈现 Pickerview。 这是我的代码

```import SwiftUI

struct ViewB: View {
    @State private var showingImagePicker = false
    @State private var uploadedPhotos = [UIImage]()

    var body: some View {
        VStack {
            Button("Select Image") {
                showingImagePicker = true
            }
        }
        .sheet(isPresented: $showingImagePicker) {
             PhotoPicker(photoList: $uploadedPhotos)
        }
        .onChange(of: uploadedPhotos) { _ in
        }
    }
}```

此代码是 ViewB,我将在点击 viewB 中的按钮时显示 pickerView。但我不想点击按钮,而是希望选择器出现在 ViewB

我想我明白了 -

   struct CreateView: View {
        @State private var image: Image?
        @State private var showingImagePicker = false
        @State private var uploadedPhotos = [UIImage]()
    
        var body: some View {
            ScrollView {
                HStack {
                    image?.resizable().scaledToFit()
                }
                .onAppear {
                    showingImagePicker = true
                }
                .sheet(isPresented: $showingImagePicker) {
                    PhotoPicker(photoList: $uploadedPhotos)
                }
                .onChange(of: uploadedPhotos) { _ in
                    guard let uiImage = uploadedPhotos.first else {return}
                    image = Image(uiImage: uiImage)
                }
            }
        }
    }

这里的 PhotoPicker() 是我的自定义视图

SwiftUI 中有一个名为 .onAppear(perform:) 的视图修饰符,它是 UIKit viewDidAppear 的 SwiftUI 对应项,为您提供构建和显示 SwiftUI 视图的入口点。只需将此修饰符添加到视图 B(您正在呈现的 sheet 内的视图)。在您提供给修饰符的闭包中,您可以更改状态以根据需要显示选择器。

如果您希望选取器视图在视图出现后进行动画处理,声明过渡和动画上下文的适当位置是在用作选取器视图的视图上。

struct ViewB: View {

    @State private var displayPicker = false

    var body: some View {
        VStack {
            Text("This is View B")
            if displayPicker {
                PickerView()
                    .transition(.slide)
                    .animation(.easeInOut, value: displayPicker)
            }
        }
        .onAppear {
            displayPicker = true
        }
    }
}

在此处阅读有关修饰符的更多信息: https://developer.apple.com/documentation/SwiftUI/AnyView/onAppear(perform:)