SwiftUI:为 .sheet(_: onDismiss:) 重置状态
Posted
技术标签:
【中文标题】SwiftUI:为 .sheet(_: onDismiss:) 重置状态【英文标题】:SwiftUI: reset state for .sheet(_: onDismiss:) 【发布时间】:2019-08-21 19:59:21 【问题描述】:我在一个视图上实现了一个onTapGesture
,它使用.sheet
呈现另一个视图。
当用户使用向下滑动手势关闭工作表时,我将 @State
更改回 false。 (与.sheet(_: onDismiss:)
)
当我第一次点击卡片时,会显示该表格。
但是,在关闭 .sheet 并再次点击 Card()
后,不会显示该工作表。
我不确定它为什么不起作用:我添加了 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)
知道为什么我的实现不起作用吗?
谢谢!
【问题讨论】:
【参考方案1】:请注意:ios 13.1 Beta 1、Xcode 11 Beta 7 已修复!
【讨论】:
【参考方案2】:这可能是因为您在List
中有.sheet
。如果是这样,那么这是一个已知的错误,有望得到修复。在此期间,您必须将.sheet
移出List
,它应该可以按预期工作。
【讨论】:
感谢您告诉我!以上是关于SwiftUI:为 .sheet(_: onDismiss:) 重置状态的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI .sheet() 的主体在解雇后被评估并且不呈现
SwiftUI禁止用户关闭sheet弹出视图在iOS14.6+失效的巧妙解决
SwiftUI禁止用户关闭sheet弹出视图在iOS14.6+失效的巧妙解决
SwiftUI:.sheet() 在关闭当前工作表时不会使用预期数据转到上一个视图