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 (将#修改为@)