Я использую SwiftUI в приложении UIKit, поэтому некоторые из контроллеров представления в UINavigationController являются UIHostingControllers
В различных частях моего кода у меня есть UIHostingController(rootView: ArticleView()) или UIHostingController(rootView: RatingView()) и некоторые другие
Я хотел конкретно определить, собирается ли контроллер навигации отображать просмотр статьи или просмотр рейтинга, и что я сделал было:
Код: Выделить всё
protocol TabBarCompatible: View { }
extension ArticleView: TabBarCompatible { }
extension RatingView: TabBarCompatible { }
Код: Выделить всё
if let destinationView = self as? UIHostingController,
destinationView.rootView is any TabBarCompatible
- Что я действительно хочу проверить, так это `if let targetView = self as? UIHostingController
- Я предпочитаю не переносить AnyView, если только это не крайний вариант, поскольку мне придется делать это во многих местах.
Код: Выделить всё
let swiftUIControllers = [UIHostingController, UIHostingController]
// loop through the swiftUIControllers and compare the current controller using isKind(of: )
Подробнее здесь: https://stackoverflow.com/questions/793 ... without-kn