Я играю с доступом SwiftUI к UIViewController через протокол UIViewControllerRepresentable; используя Nib против создания экземпляров класса вручную.
Большая часть демонстрационного примера, который я видел, имеет экземпляр ViewController в коде; как показано ниже:
struct RicViewVC: UIViewControllerRepresentable {
// Parameters ----------------------------
// let url: URL
@Binding var showingVC: Bool
// ---------------------------------------
// 1)
func makeUIViewController(context _: Context) -> RicViewController {
let viewController = RicViewController()
Bundle.main.loadNibNamed("RicView", owner: viewController, options: nil)
return viewController
}
// 2)
func updateUIViewController(_: RicViewController, context _: Context) {}
// 3
func makeCoordinator() -> RicViewVC.Coordinator {
Coordinator(showing: $showingVC)
}
class Coordinator: NSObject {
@Binding var showingCoord: Bool
init(showing: Binding<Bool>) {
_showingCoord = showing
}
}
}
Однако это не работает, когда UIViewController связан с и IB:
Привет от RicViewController 2020-02-23 10: 53: 55.893551-0800
SafariRepresentable [9792: 151550] *** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: '- [UIViewController _loadViewFromNibNamed: bundle:] загрузил перо «RicView», но представление розетка не была установлена. '
Вот где я запутался. Как связать инстанцированный XIB IB в # 1 (см. Код выше): makeUIViewController ()? Какой синтаксис?