【发布时间】:2020-06-19 16:10:10
【问题描述】:
我的初始视图是使用 SwiftUI 构建的。
我想从这个转换到 UIViewController 并调用一个可能会改变设计的方法,一个例子是隐藏一个 IBOutlet。
这是我目前正在做的事情:
@available(iOS 13.0, *)
struct DetailViewControllerWrapper: UIViewControllerRepresentable {
typealias UIViewControllerType = DetailViewController
func makeUIViewController(context: UIViewControllerRepresentableContext<DetailViewControllerWrapper>) -> DetailViewControllerWrapper.UIViewControllerType {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let detailViewController: DetailViewController = mainStoryboard.instantiateViewController(withIdentifier: "detailViewController") as! DetailViewController
detailViewController.someMethod()
return detailViewController
}
func updateUIViewController(_ uiViewController: DetailViewControllerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<DetailViewControllerWrapper>) {
//
}
}
这正在推送到我的 DetailViewController,但我收到了 Unexpectedly found nil while implicitly unwrapping an Optional value 错误。
关于从 SwiftUI 导航到 UIKit / UIViewController 有什么建议吗?
【问题讨论】:
-
我猜
detailViewController.someMethod()使用IBOutlet属性?崩溃断点指向该属性的使用?我认为在实例化视图控制器之后还没有直接设置出口。 -
如果你看到
DetailViewController的视图然后崩溃,那么它是在DetailViewController的实现中,而不是在提供的代码中。 -
我已经取得了一些进展,但我遇到的一件事是我的状态栏最初是隐藏的,但是当从我的 SwiftUI 视图导航到我的 UIIVewController 时,它变得不隐藏,即使正在调用 prefersStatusBarHidden。有什么想法吗?
标签: ios swift xcode uikit swiftui