SwiftUI:为 .sheet(_: onDismiss:) 重置状态
SwiftUI: reset state for .sheet(_: onDismiss:)
我已经在使用 .sheet
呈现另一个视图的视图上实现了 onTapGesture
。
当用户使用向下滑动手势关闭 sheet 时,我将我的 @State
改回 false。 (与 .sheet(_: onDismiss:)
)
我第一次点击卡片时,会出现 sheet。
然而,在关闭 .sheet 并再次点击 Card()
后,sheet 不会出现。
我不确定它为什么不起作用:我添加了 2 个打印语句来检查 @State 的值,当我关闭 .sheet
时它被设置回 false
struct CardView: View {
@EnvironmentObject var bixiModel: BixiStationCombinedListViewModel
@State var isModalOpen: Bool = false
var station: BixiStationCombinedViewModel
var body: some View {
ZStack(alignment: .leading){
Card(station: station)
}
.onTapGesture {
self.isModalOpen = true
print(self.isModalOpen)
// Prints: true
}
.sheet(isPresented: self.$isModalOpen, onDismiss: {
self.isModalOpen = false
print(self.isModalOpen)
// Prints: false
})
{
BixiStationDetailView(station: self.station)
.environmentObject(self.bixiModel)
}
}
}
知道为什么我的实施不起作用吗?
谢谢!
可能是因为你在List
里面有.sheet
。如果是这样,那么这是一个已知的错误,希望得到修复。在此期间,您必须将 .sheet
移出 List
,它应该会按预期工作。
请注意:iOS 13.1 Beta 1、Xcode 11 Beta 7 已修复!
我已经在使用 .sheet
呈现另一个视图的视图上实现了 onTapGesture
。
当用户使用向下滑动手势关闭 sheet 时,我将我的 @State
改回 false。 (与 .sheet(_: onDismiss:)
)
我第一次点击卡片时,会出现 sheet。
然而,在关闭 .sheet 并再次点击 Card()
后,sheet 不会出现。
我不确定它为什么不起作用:我添加了 2 个打印语句来检查 @State 的值,当我关闭 .sheet
时它被设置回 false
struct CardView: View {
@EnvironmentObject var bixiModel: BixiStationCombinedListViewModel
@State var isModalOpen: Bool = false
var station: BixiStationCombinedViewModel
var body: some View {
ZStack(alignment: .leading){
Card(station: station)
}
.onTapGesture {
self.isModalOpen = true
print(self.isModalOpen)
// Prints: true
}
.sheet(isPresented: self.$isModalOpen, onDismiss: {
self.isModalOpen = false
print(self.isModalOpen)
// Prints: false
})
{
BixiStationDetailView(station: self.station)
.environmentObject(self.bixiModel)
}
}
}
知道为什么我的实施不起作用吗?
谢谢!
可能是因为你在List
里面有.sheet
。如果是这样,那么这是一个已知的错误,希望得到修复。在此期间,您必须将 .sheet
移出 List
,它应该会按预期工作。
请注意:iOS 13.1 Beta 1、Xcode 11 Beta 7 已修复!