Почему контейнер SwiftUI не может определить конкретный тип видимого в данный момент дочернего представления?IOS

Программируем под IOS
Anonymous
Почему контейнер SwiftUI не может определить конкретный тип видимого в данный момент дочернего представления?

Сообщение Anonymous »

Я создаю приложение SwiftUI и пытаюсь определить отображаемое в данный момент имя экрана во время выполнения для отладки и использования внутренних инструментов.
Моя структура навигации фиксирована и использует общий контейнер/базовое представление, охватывающее все экраны. Я хочу, чтобы контейнер определял, какой экран в данный момент отображается, без добавления идентификаторов или модификаторов для каждого экрана.
Вот что я наблюдал:

• Передача self или экземпляра представления в контейнер невозможна, поскольку представления SwiftUI являются типами значений и воссоздаются во время рендеринга.

• Использование String(описание: Content.self) внутри универсального контейнера возвращает только общий тип, а не конкретное представление, которое в данный момент существует. визуализируется.

• Обертывание всех экранов в базовое представление/представление контейнера отображает только тип контейнера, если дополнительные метаданные не вводятся вручную на экран.

• Отслеживание экрана с помощью NavigationPath или пользовательского маршрутизатора часто приводит к созданию общих или внутренних типов (например, Root, Internal), а не к реальному видимому представлению.
Вопрос:

С точки зрения дизайна SwiftUI, так ли это? принципиально невозможно для родительского представления/представления-контейнера узнать конкретный тип видимого в данный момент дочернего представления во время выполнения без явной передачи идентификатора?

Если да, то какие ограничения дизайна в SwiftUI вызывают такое поведение?
Я не ищу сторонние библиотеки или субъективные рекомендации, а скорее объяснение ограничения или механизма уровня языка, который мне может не хватать.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ntly-visib

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