【发布时间】:2020-12-23 08:52:33
【问题描述】:
我从 UIKit 来到 SwiftUI,但在呈现新视图时遇到了 NavigationLink 没有动画的问题。
当以下属性不为 nil 时,我已设置视图结构以包含 NavigationLink:
@State private var retrievedDeviceIdentity: Proteus.DeviceIdentity?
Proteus.DeviceIdentity 类型是一个基本的数据结构。此属性由成功的异步闭包填充,而不是直接的用户交互。因此,视图结构是这样设置的,使用 NavigationLink 的 destination:isActive:label: 初始化器:
var body: some View {
NavigationView {
VStack {
Form {
// Form building
}
if let deviceIdentity = retrievedDeviceIdentity {
NavigationLink(
destination: AddDeviceLinkDeviceForm(deviceIdentity: deviceIdentity),
isActive: .constant(retrievedDeviceIdentity != nil),
label: {
EmptyView()
}
)
.onDisappear() {
updateSyncButtonEnabledState()
}
}
}
}
}
当retrievedDeviceIdentity 填充为非零时,新视图确实出现了。但是,该视图没有幻灯片过渡;它会立即改变。在该新视图中,点击返回按钮会将幻灯片切换回该视图。
任何想法如何解决这个问题?由于我对 SwiftUI 很陌生,如果我将新结构设置错误,那么我也欢迎对此提供反馈。
(我在 macOS Big Sur 11.0.1 上使用 Xcode 12.3。)
【问题讨论】:
标签: animation swiftui swiftui-navigationlink