首页 > 解决方案 > SwiftUI 代码未在 UIKit 项目中编译

问题描述

我在仅使用 UIKit 的 Xcode 项目中创建了一个新的 SwiftUI 视图。我正在尝试在 SwiftUI 中为应用程序创建新屏幕,然后将它们嵌入到 ViewControllers 中。Xcode 在 SwiftUI 文件中自动生成结构和预览。但随后几乎每一行都会出错,就好像 Xcode 无法将 SwiftUI 导入文件一样。代码错误图片

我有:在 SceneDelegate.swift 中正确设置窗口场景,从 info.plist 中删除情节提要键,在项目构建设置中打开预览,确保我的项目针对 iOS 13.0,清理派生数据。

我在 SceneDelegate 中的设置并导入了 SwiftUI:

if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            window.rootViewController = UIHostingController(rootView: ProfilePage())
            self.window = window
            window.makeKeyAndVisible()
        }
// ERROR: Generic class 'UIHostingController' requires that 'ProfilePage' conform to 'View'

我的代码:

import SwiftUI

struct ProfilePage: View {
    var body: some View {
        Text("Hello, World!")
    }
}

struct ProfilePage_Previews: PreviewProvider {
    static var previews: some View {
        ProfilePage()
    }
}

标签: swiftxcodeswiftui

解决方案


正如您在错误消息中看到的那样,XCode 指的是UIView而不是SwiftUI.View. 您应该替换ViewSwiftUI.View来解决问题。


推荐阅读