问题描述
我正在尝试在我的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 (将#修改为@)