【发布时间】:2023-03-12 14:39:01
【问题描述】:
我有一个故事板应用程序,现在从我现有应用程序中的 SwiftUI 视图开始。我有一个填充变量的 API 调用,例如:姓名、姓氏、电子邮件和移动设备。
如何在我的 UIHostingController 中传递 UIKit 变量以在 SwiftUI 视图中显示?
我的故事板 UIKit 文件:
import UIKit
import SwiftUI
class UserDashboardHostVC: UIViewController {
var name = String()
var surname = String()
var email = String()
var mobile = String()
override func viewDidLoad() {
super.viewDidLoad()
getAPIdata()
//this populates the above 4 variables.
let controller = UIHostingController(rootView: UserDashboard())
controller.view.translatesAutoresizingMaskIntoConstraints = false
self.addChild(controller)
self.view.addSubview(controller.view)
controller.didMove(toParent: self)
}
}
我的 SwiftUI 视图:
import SwiftUI
struct UserDashboard: View {
var body: some View {
NavigationView{
Text(name)
Spacer()
Text(surname)
Spacer()
Text(email)
Spacer()
Text(mobile)
Spacer()
}
}
}
【问题讨论】:
-
您的 UserDashboard 视图文件应该向您显示编译器消息,它无法在范围内找到姓名、姓氏、电子邮件和移动设备。首先在视图中定义这些,但在它的主体之外。 let name: String, let surname: String... 等等。然后,一旦你这样做了,编译器会抛出一个错误,你在 UserDashboardHostVC 中实例化了一个 UserDashboard 的实例,说它没有正确的初始化程序。解决这个问题,你应该被排序。