SwiftUI:如何将单个工具栏或 ToolbarItem 保留在 NavigationView 堆栈中的下一个视图上?

bod*_*ich 6 swift navigationview swiftui

应用于 NavigationView 目标的每个工具栏实际上都是单独的工具栏,并且一个工具栏通过不透明度过渡更改为另一个工具栏。

如何在下一个目标上保留一个工具栏或仅 ToolbarItem,因此它可以是动画的,例如,假设尾随 ToolbarItem 在 HStack 中包含 2 个按钮,并且我想插入另一个带有动画的按钮,就像我在一个按钮中那样单一视图?

想要完全控制 ToolbarItem,就像它是单个项目一样。

struct Temp_Preview: PreviewProvider {
    static var previews: some View {
        return NavigationView {
            NavigationLink {
                Text("TARGE TPAGE")
                    .toolbar {
                        ToolbarItem(placement: .navigationBarTrailing) {
                            ToolBarView(showExtraButton: true)
                        }
                    }
            } label: {
                Text("Next page")
                    .toolbar {
                        ToolbarItem(placement: .navigationBarTrailing) {
                            ToolBarView(showExtraButton: false)
                        }
                    }
            }

        }
        .navigationViewStyle(StackNavigationViewStyle())
    }
}

struct ToolBarView: View {
    let showExtraButton: Bool
    var body: some View {
        HStack {
            let buttonsCount = showExtraButton ? 3 : 2
            ForEach(0..<buttonsCount, id: \.self) { index in
                Button(action: {}) {
                    Color.blue
                        .cornerRadius(5)
                        .frame(width: 80 - CGFloat(20 * index), height: 20)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述