如何解决SwiftUI中的UIViewController集成
我正在尝试在我的SwiftUI项目中连接一个UIViewController。我看了WWDC19和一些有趣的文章,并且尝试了两种不同的方法:
1:
struct SwipingIntegratedController : UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> MyUIViewController {
return MyUIViewController()
}
func updateUIViewController(_ uiViewController: MyUIViewController,context: Context) {
}
}
通过这种方法,我在MyUIViewController
的第一个UI元素中崩溃了(假设存在view.backgroundColor = .white =>崩溃)。
所以我想这里出事了...
所以我尝试了第二种方法:
2:
struct HomeViewRepresentable: UIViewRepresentable {
func makeUIView(context: Context) -> UIView {
return UIStoryboard(name: "MyView",bundle: Bundle.main).instantiateViewController(withIdentifier: "MyViewController").view
}
func updateUIView(_ view: UIView,context: Context) {
}
}
使用这种方法,一切似乎都可以正常工作(没有崩溃),但是一旦我的UIViewController被实例化,一切似乎都没有效果。我已经看到有一个协调器来管理逻辑,但是我在此viewController中要做的只是按下一个按钮,转到使用UIKit进行的完全不同的流程。
所以我的问题是,我想念什么吗?为什么第一种方法(似乎是正确的方法)崩溃了?为什么第二种方法的UiViewController死了却没有任何动作?
Ps。
这是第一种方法导致崩溃的地方:
override func viewDidLoad() {
super.viewDidLoad()
self.mainView.backgroundColor = Colors.white //Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
在调试器中,我所有的UI元素都像这样:
myButton UIButton? nil
如果我删除mainView
,崩溃将发生在以下UI元素上!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。