Вам необходимо соединить ViewController с помощью UIViewControllerRepresentable.
. Apple предоставляет документацию о том, как использовать это здесь:
https://developer.apple.com/documentation/swiftui/uiviewcontrollerrepresentable
Кроме того, есть рабочий пример этого в их уроках SwiftUI, особенно урок под названием " Интерфейс с UIKit ", который можно найти здесь:
https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
Пример ViewController, с которым они работают, выглядит следующим образом:
struct PageViewController: UIViewControllerRepresentable {
var controllers: [UIViewController]
func makeUIViewController(context: Context) -> UIPageViewController {
let pageViewController = UIPageViewController(
transitionStyle: .scroll,
navigationOrientation: .horizontal)
return pageViewController
}
func updateUIViewController(_ pageViewController: UIPageViewController, context: Context) {
pageViewController.setViewControllers(
[controllers[0]], direction: .forward, animated: true)
}
class Coordinator: NSObject {
var parent: PageViewController
init(_ pageViewController: PageViewController) {
self.parent = pageViewController
}
}
}
Как говорится, сердце и душа соединения ViewController:
1) Создайте структуру с уникальным именем для ViewController, которая наследуется от UIViewControllerRepresentable
2) Реализация функция makeUIViewController(context: Context)
с типом возврата UIViewController
3) Реализация функции updateUIViewController(_ uiViewController: YourUIViewController, context: Context)
без возврата
4) При необходимости, реализовать класс Coordinator
, который наследуется от NSObject
, а также любые протоколы делегатов, которые вам нужны.
Существует немного больше в зависимости от того, что вам нужно, чтобы ViewController делал, но это должно направить вас в правильном направлении.