#swiftui
#swiftui
Вопрос:
У меня есть UIViewController, который используется в SwiftUI с помощью UIViewControllerRepresentable.
Когда я возвращаюсь от контроллера к представлению SwiftUI, deinit не вызывается (как я и ожидал).
Однако, когда я выполняю новую навигацию к UIViewControllerRepresentable, сначала вызывается deinit (для предыдущего контроллера)
Есть ли что-то, чего мне не хватает здесь с UIViewControllerRepresentable, почему оно не освобождается?
import SwiftUI
import UIKit
class MyViewController: UIViewController {
deinit() {
print("This isn't called until the second initiation of the UIViewControllerRepresentable")
}
}
struct MyViewControllerWrapper: UIViewControllerRepresentable {
typealias UIViewControllerType = MyViewController
func makeUIViewController(context: UIViewControllerRepresentableContext<MyViewControllerWrapper>) -> MyViewControllerWrapper.UIViewControllerType {
let vc = UIViewControllerType(requestType: requestType)
return vc
}
func updateUIViewController(_ uiViewController: MyViewControllerWrapper.UIViewControllerType, context: UIViewControllerRepresentableContext<MyViewControllerWrapper>) {
}
}
Комментарии:
1. Это давно известное поведение NavigationView — оно просто не очищает просмотр последнего посещения, пока он не будет заменен, UIViewControllerRepresentable не имеет к этому никакого отношения.
2. Спасибо, можете ли вы поделиться, где вы узнали эту информацию?