【发布时间】:2019-10-31 01:57:37
【问题描述】:
我已尝试将addSubview SwiftUI 视图转换为 UIView。 self.view.addSubview(contentView)
错误:无法将“ContentView”类型的值转换为预期的参数类型 'UIView'
请帮我实现这个 UI。
import UIKit
import SwiftUI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.backgroundColor = UIColor.lightGray
let contentView = ContentView()
view.addSubview(contentView) // Error: Cannot convert value of type 'ContentView' to expected argument type 'UIView'
}
}
struct ContentView: View {
var body: some View {
Text("Hello world")
}
}
【问题讨论】:
-
View协议 != 一个UIView -
观看第 231 节的非常第一部分:集成 SwiftUI。您需要使用
UIHostingController。 developer.apple.com/videos/play/wwdc2019/231 -
抱歉第二条评论。由于
UIHostingController is aUIViewController` 和您希望使用addSubview,您还需要学习如何使用子视图控制器(在UIKit中完成),其中一部分涉及添加视图作为父视图的子视图。宿主控制器(一个用于 UIKit、AppKit 和 WatchKit)是完整的控制器,并且很容易用于 全屏 SwiftUI 视图。希望这会有所帮助。
标签: uikit swiftui xcode11 ios13