С SwiftUI анимация не запускается при повторной загрузке представления - PullRequest
0 голосов
/ 08 октября 2019

У меня есть представление по умолчанию, ContentView:

    var body: some View {
    return Group {
        if observable.operationToSign.isEmpty {
            Ring(fillPoint: fillPoint).stroke(colors[colorIndex], lineWidth: 10)
            .frame(width: 100, height: 100)
            .onAppear() {
                withAnimation(self.animation) {
                    self.fillPoint = 1.0
                    _ = self.timer
                }
                self.booted = true
            }
        } else {
            AuthorizationView(observable: observable)
        }

    }
}

При определенных условиях он загружает это другое представление, AuthorizationView:

var body: some View {
    return Group {
        if observable.operationToSign.isEmpty {
            Text("Nothing to sign")
            ContentView(observable: self.observable)
        } else {
            VStack {
                Text("Sign payment")
                HStack {
                    Button(
                        action: {
                            signPayment(observable: self.observable)
                    },
                        label: { Text("✅") }
                    )
                    Button(
                        action: {
                            // do something
                            print("not implemented")
                    },
                        label: { Text("?‍♂️") }
                    )
                }
            }
        }
    }
}

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

Есть идеи, почему .onAppear не запускается при загрузке ContentView?

...