SwiftUI NavigationLink вызывает появление pu sh, затем выскакивает после завершения, а затем снова нажимает навсегда - PullRequest
0 голосов
/ 05 мая 2020

У меня в коде SwiftUI появляются странные эффекты анимации. В моем sheet, который представлен, мой root код SafariQuickTopicView приведен ниже.

Когда я нажимаю любую из кнопок в моем horizontalScroll, actionState обновляется до readyToTransition , вид будет pu sh, затем по завершении он временно вернется к предыдущему виду, а затем снова pu sh навсегда для моего нового View.

Есть идеи, зачем он это делает? Я подумал, что это может быть связано с моим SafariView, который я удалил из кода ниже, поскольку это все еще происходит. Это изображение SafariViewController, которое соответствует UIViewRepresentable, чего бы оно ни стоило.

Спасибо


    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
    @EnvironmentObject var state: AppState

    @Binding var articleDisplayed: Bool

    @State var actionState: ActionState? = .setup

    // MARK: - Body

    var body: some View {
        NavigationView {
            ZStack(alignment: .bottom) {
                horizontalScroll
            }
            .navigationBarTitle("", displayMode: .inline)
            .navigationBarItems(trailing: passButton)
        }
    }

    // MARK: - Subviews

    private var horizontalScroll: some View {
        return ScrollView(.horizontal, showsIndicators: false) {
            HStack {
                ForEach(0..<self.multiTopics.endIndex) { i in
                    NavigationLink(destination: self.tagView, tag: .readyForTransition, selection: self.$actionState) {
                        MultiTopicView(
                            articleDisplayed: self.$articleDisplayed,
                            actionState: self.$actionState,
                            topics: self.multiTopics[i],
                            setTopics: { self.topicsWereSet(topics: self.multiTopics[i]) }
                        )
                    }
                }

                NavigationLink(destination: topicsView) {
                    Text("More Topics")
                }
            }
            .padding(.horizontal, 12)
            .frame(maxHeight: 55)
        }
        .background(Color.white)
        .padding(.top, -11)
    }

struct MultiTopicView: View {

    @Binding var articleDisplayed: Bool
    @Binding var actionState: ActionState?
    let topics: [Topic]
    let setTopics: () -> Void

    var topicNames: String {
        topics.map { $0.name }.joined(separator: ", ")
    }

    var body: some View {
        Button(action: {
            self.actionState = .readyForTransition
        }) {
            Text(self.topicNames)
        }
    }
}


...