Как в общем случае использовать UIHostingController из UIViewController, не зная rootViewIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как в общем случае использовать UIHostingController из UIViewController, не зная rootView

Сообщение Anonymous »

У меня есть специальный UINavigationController, который выполняет некоторые действия по перемещению и выталкиванию.
Я использую 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
Теперь приведение к UIHostingController завершается с ошибкой, что, вероятно, могло бы быть успешным, если бы при создании представлений SwiftUI мне нужно было бы выполнить UIHostingController(rootView: AnyView(ArticleView( ))) - однако:
  • Что я действительно хочу проверить, так это `if let targetView = self as? UIHostingController
  • Я предпочитаю не переносить AnyView, если только это не крайний вариант, поскольку мне придется делать это во многих местах.
Другим вариантом может быть хранение всех возможностей, которые я хочу проверить, в массиве и сохранение

Код: Выделить всё

let swiftUIControllers = [UIHostingController, UIHostingController]

// loop through the swiftUIControllers and compare the current controller using isKind(of: )
Есть ли другой/лучший способ приведения UIViewController к UIHostingController в целом, не зная корневого представления UIHostingController?

Подробнее здесь: https://stackoverflow.com/questions/793 ... without-kn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как в общем случае использовать UIHostingController из UIViewController, не зная rootView
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • В IOS при масштабировании rootview подпредставление должно реагировать как приложение freeform/figma. есть идеи как это
    Anonymous » » в форуме IOS
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»