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

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

Сообщение Anonymous »

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

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

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

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

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

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

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

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

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

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

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

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

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