首页 > 解决方案 > 是否可以在同一个 View SwiftUIView 和 UIViewControllerRepresentable 中组合在一起?

问题描述

我想知道是否可以将 View 和 UIViewControllerRepresentable 组合在同一个视图中。我试过了:

//Here I declare MyViewController:
class MyViewController: UIViewController {
    override viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .red
    }
}

struct MyViewControllerIntegrate: UIViewControllerRepresentable {

    func makeUIViewController(context: UIViewControllerRepresentableContext<MyViewControllerIntegrate>) -> MyViewController {
        return MyViewController()
    }

    func updateUIViewController(_ uiViewController: MyViewController, context: UIViewControllerRepresentableContext<MyViewControllerIntegrate>) {
    }
}

struct MyView: View {
    var body: some View {
        Text("Hello StackOverflow!")
    }
}

struct ContentView: View {
    var body: some View {
        MyView()
        MyViewController()
        .frame(height: 400)
    }
}

Xcode 向我显示一条错误消息:

函数声明了一个不透明的返回类型,但它的主体中没有返回语句来推断基础类型

有什么提示吗?谢谢

标签: swiftxcodeviewuiviewcontrollerswiftui

解决方案


将它们放在组中(或某些堆栈中,例如 VStack)

struct ContentView: View {
    var body: some View {
        Group {
           MyView()
           MyViewController()
              .frame(height: 400)
        }
    }
}

推荐阅读