Swiftui 快捷方式:工具栏项(位置:.principal)中的按钮在更改后不起作用';s标签 Xcode 12 beta 6

Swiftui 快捷方式:工具栏项(位置:.principal)中的按钮在更改后不起作用';s标签 Xcode 12 beta 6,swiftui,xcode12,Swiftui,Xcode12,工具栏中有一个按钮,其标签文本绑定到状态变量buttonTitle。我想点击此按钮触发图纸视图,选择以更改绑定变量 返回内容视图后,按钮的标题将更新。但是如果你再按一下按钮,它就不工作了 代码: 这是已知的工具栏图纸布局问题,另请参见。你可以向苹果提交另一个反馈 下面是一个解决方案,用于在关闭工作表后使用回调更新工具栏项。使用Xcode 12b5进行测试 struct ContentView: View { @State var show = false @State var b

工具栏中有一个按钮,其标签文本绑定到状态变量
buttonTitle
。我想点击此按钮触发图纸视图,选择以更改绑定变量

返回内容视图后,按钮的标题将更新。但是如果你再按一下按钮,它就不工作了

代码: 这是已知的工具栏图纸布局问题,另请参见。你可以向苹果提交另一个反馈

下面是一个解决方案,用于在关闭工作表后使用回调更新工具栏项。使用Xcode 12b5进行测试

struct ContentView: View {
    @State var show = false
    @State var buttonTitle = "button A"

    var body: some View {
        NavigationView {
            Text("Hello World!")
                .toolbar {
                    ToolbarItem(placement: .principal) {
                        Button {
                            show.toggle()
                        } label: {
                            Text(buttonTitle)
                        }
                        .sheet(isPresented: $show) {
                            SelectTitle(buttonTitle: buttonTitle) {
                                self.buttonTitle = $0
                            }
                        }
                    }
                }
        }
    }
}

struct SelectTitle: View {
    @Environment(\.presentationMode) var presentationMode

    @State private var buttonTitle: String
    let callback: (String) -> ()

    init(buttonTitle: String, callback: @escaping (String) -> ()) {
        _buttonTitle = State(initialValue: buttonTitle)
        self.callback = callback
    }

    var body: some View {
        Button("Button B") {
            buttonTitle = "Button B"
            presentationMode.wrappedValue.dismiss()
        }
        .onDisappear {
            callback(buttonTitle)
        }
    }
}
工作表(…)
移出工具栏项目范围,如下所示:

NavigationView {
  ..
}.sheet(...)

你好,Asperi,我想知道如何在工具栏项目中水平均匀地分布项目?我试着用一个Hstack,在里面放了一些东西,但是间隔棒不好用,有什么技巧吗?谢谢你的建议!
NavigationView {
  ..
}.sheet(...)