【发布时间】:2021-09-04 11:52:37
【问题描述】:
我将 ToolbarContent 与 ToolbarItem 一起使用,以便在多个视图中拥有一致的工具栏...工具栏看起来像:
struct ToolBarCancelDeleteAdd: ToolbarContent {
@Binding var deletePressed: Bool
let cancel: () -> Void
let deleting: () -> Void
let adding: () -> Void
var body: some ToolbarContent {
ToolbarItemGroup(placement: .cancellationAction) {
Button("Cancel", action: cancel )
}
ToolbarItemGroup(placement: .confirmationAction) {
if deletePressed {
Button(action: deleting, label:{Text("Done")})
} else {
Button(action: deleting, label:{Text("Delete")})
}
Button(action: adding, label: {Image(systemName: "plus")})
}
}
在我看来,我正在添加工具栏并提供所需的关闭信息..
.navigationBarBackButtonHidden(true)
.navigationTitle("Budget Descriptions")
.toolbar() {
ToolBarCancelDeleteAdd(deletePressed: $deletePressed){
if self.editMode?.wrappedValue == .active {
self.editMode?.wrappedValue = .inactive
deletePressed.toggle()
}
self.presentationMode.wrappedValue.dismiss()
} deleting: {
if self.editMode?.wrappedValue == .inactive {
self.editMode?.wrappedValue = .active
deletePressed.toggle()
} else {
self.editMode?.wrappedValue = .inactive
deletePressed.toggle()
}
} adding: {
if self.editMode?.wrappedValue == .active {
self.editMode?.wrappedValue = .inactive
}
self.isAdding.toggle()
}
} // END OF TOOLBAR
这一切都很好,我很满意.....除了我在多个视图中执行此代码,如果我需要调整它,我必须转到多个视图来调整它。如果我可以像使用 ViewBuilder 对某些视图所做的那样命名这个闭包内容,那就太好了。这样我就可以以某种方式命名闭包内容......就像......
.navigationBarBackButtonHidden(true)
.navigationTitle("Budget Descriptions")
.toolbar() {
ToolBarCancelDeleteAdd(deletePressed: $deletePressed){
CancelContent()
} deleting: {
DeleteContent()
} adding: {
AddingContent()
}
} // END OF TOOLBAR
【问题讨论】: