Как я могу заставить SwiftUI SidebarMenu отображать один и тот же DetailView каждый раз, а не создавать новый (в macOS) - PullRequest
2 голосов
/ 13 марта 2020

У меня есть приложение MacOS Master / Detail, которое использует NavigationView с боковым меню на левой панели и диапазоном подробных видов на правой панели.

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

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

Есть ли способ добиться этого с помощью SwiftUI.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

SwiftUI создает представление из модели, например, привязку. Сохраните выделенные области и позиции прокрутки, чтобы представление можно было воссоздать точно так, как оно было. Поскольку представление может обновляться как другой размер, было бы лучше сохранить идентификатор элемента, видимого сверху, и прокрутить до него, а не со смещением.

Способ, которым старый UITabBarController сохранял свои дочерние контроллеры представления живой можно считать ошибкой и пустой тратой памяти.

0 голосов
/ 14 марта 2020

Кажется, что SwiftUI не поддерживает это в настоящее время. Вот несколько похожих вопросов:

Вид с вкладками теряет состояние

Вид с вкладками сбрасывает состояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...