【发布时间】:2022-07-06 23:12:03
【问题描述】:
我有一个显示用于过滤列表中项目的工作表的视图。视图有这个变量:
var filter: some View {
Button {
self.showFilter = true
} label: {
Image(systemName: "line.horizontal.3.decrease.circle")
.renderingMode(.original)
}
.sheet(isPresented: $showFilter) {
FilterView($jobFilter, categoriesViewModel, jobsViewModel)
}
}
但是,在工作表中,我正在尝试以下操作,我无法在单击“完成”按钮时关闭视图,只能在“取消”按钮上:
...
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("FilterView.Button.Cancel.Text".capitalizedLocalization) {
presentationMode.wrappedValue.dismiss()
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button("FilterView.Button.Done.Text".capitalizedLocalization) {
let request = Job.defaultRequest()
request.predicate = filterViewModel.buildPredicate(withJobFilterDraft: self.draft)
request.sortDescriptors = [NSSortDescriptor(key: #keyPath(Job.publicationDate), ascending: false)]
jobsViewModel.filteredJobsFetchRequest = request
self.jobFilter = self.draft
presentationMode.wrappedValue.dismiss()
}
}
}
我也尝试过 @Binding,就像 Paul 说的 here,但没有运气。
有什么解决方法,还是我做错了什么?
提前致谢!
【问题讨论】:
-
只看代码,什么都没有。我会尝试注释掉除
dismiss()行之外的所有内容并验证其是否有效,然后逐行添加其余部分以查看是否有任何内容阻止解雇? -
需要最小的可重现示例,这是其他代码中的内容。
标签: swift swiftui environmentobject