从SwiftUI中呈现UINavigationController。

4

我有一个UIViewController,我想从我的SwiftUI视图中呈现它,但问题是我需要将UIViewController包装在UINavigationController中,如何从我的SwiftUI视图中呈现被包装的VC?

这是我尝试过的,它可以用于呈现视图控制器,但是我不知道如何将其包装在导航控制器中:

struct ComposeTakeView: UIViewControllerRepresentable {
    func makeUIViewController(context: Context) -> ComposeTakeVC {
        return ComposeTakeVC(nibName: "ComposeTakeVC", bundle: nil)
    }
    
    func updateUIViewController(_ uiViewController: ComposeTakeVC, context: Context) {
        
    }
}

在SwiftUI视图中:

.fullScreenCover(isPresented: $showComposeTake, content: {
                    ComposeTakeView()
                })

我也尝试过使用 NavigationView 和工具栏创建一个新的 SwiftUI 视图,但无法显示工具栏按钮:
struct ComposeTakeNavView: View {
    @Environment(\.presentationMode) var presentationMode
    var body: some View {
        NavigationView {
            ComposeTakeView()
        }
        .toolbar {
            
            Button {
                presentationMode.wrappedValue.dismiss()
            } label: {
                Image(systemName: "xmark")
                    .foregroundColor(.black)
            }
        }
    }
}
1个回答

2
我们可以将其直接包装在可表示性中,并作为基类返回,例如:
func makeUIViewController(context: Context) -> UIViewController {
    let controller = ComposeTakeVC(nibName: "ComposeTakeVC", bundle: nil)
    return UINavigationController(rootViewController: controller)
}

func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
    
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接