SwiftUI .onDisappear - PullRequest
       0

SwiftUI .onDisappear

0 голосов
/ 06 февраля 2020

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

У меня это работает, вроде как, когда заголовок исчезает при переходе в NavigationLink, который я встроил в CategoryRow. Единственная проблема в том, что время отклика немного медленное, и кажется, что событие onDisappear внутри NavigationLink только иногда срабатывает. Вот рисунок, который демонстрирует точное поведение, с которым я сталкиваюсь:

broken

Вот некоторые из соответствующих кодов, которые у меня есть в моем родительском представлении, которое я назвал FeedView:

@State private var showHeader = true // showHeader will be a state variable passed between the parent and child in order to show/hide the header

var body: some View {
    VStack(spacing: 0) {
        if showHeader { // update and show/hide the header embedded in the HStack on state change
            HStack(spacing: 0) {
                // header
            }
        }

        NavigationView {
            List(categories.keys.sorted(), id: \String.self) {
                // we pass the state variable over to the CategoryRow class to be used in appear/disappear
                key in CategoryRow(nameOfCategory: "\(key)".uppercased(), posts: self.posts[key]!, showHeader: self.$showHeader)
            }
        }  

(дочерний вид; элемент CategoryRow):

@Binding var showHeader: Bool // bind the passed in showHeader variable so we can pass it back to the parent when updates need to happen

// ...

NavigationLink(destination: ExpandMediaView(post: post)
    .onAppear { self.showHeader = false } // after testing, this onAppear ALWAYS manages to fire
    .onDisappear { self.showHeader = true } // why does this only fire sometimes? 
)

Код иногда попадает только в часть .onDisappear NavigationLink, что иногда означает заголовок появляется в родительском классе, а иногда нет. Вдобавок ко всему, его показ / скрытие составляет около миллисекунды за навигацией по страницам. Кто-нибудь работал над такой проблемой раньше?

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