如何将SwiftUI表单添加到UIView控制器
我有一个UIViewController,它通过我的如何将SwiftUI表单添加到UIView控制器,swift,swiftui,Swift,Swiftui,我有一个UIViewController,它通过我的viewDidLoad中的函数显示: let imageView: UIImageView = { let iv = UIImageView() iv.contentMode = .scaleAspectFit return iv }() func configureViewComponents() { view.addSubview(imageView) 可以这样称呼它: override
viewDidLoad
中的函数显示:
let imageView: UIImageView = {
let iv = UIImageView()
iv.contentMode = .scaleAspectFit
return iv
}()
func configureViewComponents() {
view.addSubview(imageView)
可以这样称呼它:
override func viewDidLoad() {
super.viewDidLoad()
configureViewComponents()
}
我有一个单独的文件表格。swift:
import Combine
import SwiftUI
struct myForm: View {
@ObservedObject var submission = Submission()
@State var confirmationMessage = ""
@State var showingConfirmation = false
var body: some View {
NavigationView {
Form {
Toggle(isOn: $submission.fieldOne ) {
Text("Field One")
}
我正在尝试将其添加到UIViewController,方法与使用视图添加imageView.addSubview(myForm)
添加imageView相同,但我收到消息无法将form类型的值转换为预期的参数类型UIView。
如何在此UIViewController中显示我的表单?您需要使用
UIHostingController
,如下所示
func configureViewComponents() {
view.addSubview(imageView)
let formController = UIHostingController(rootView: myForm())
if let form = formController.view {
form.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(form)
form.topAnchor.constraint(equalTo: imageView.bottomAnchor, constant: 0).isActive = true
form.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
form.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0).isActive = true
form.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0).isActive = true
self.addChild(formController)
}
}
作为问题的副本结束问题怎么样?