使用SwiftUI,重新加载视图时动画无法开始

时间:2019-10-08 09:07:16

标签: swift apple-watch swiftui

我有一个默认视图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中工作。

有人知道为什么在加载ContentView时不触发.onAppear吗?

0 个答案:

没有答案