使用 NavigationStack 工具栏按钮的 MacOS swiftUI 未显示在 MenuBarExtra 应用程序中

问题描述 投票:0回答:1

我正在创建一个仅菜单栏的应用程序来解决我的问题,但我在使用导航堆栈和工具栏添加“添加”按钮时遇到了问题。

    var body: some View {
    VStack(alignment: .leading){

        NavigationStack{
            
            List(projects){ project in
                
                NavigationLink(destination: ProjectDetailView(project: project)){
                    Text(project.name)
                }
                
            }
            .navigationTitle("Projects")
            .toolbar{
                ToolbarItem(placement: .navigation, content: {   Button(
                    action: {AddProject()},
                    label: {
                        Image(systemName: "plus").imageScale(.large)
                        
                    }
                )
                }
                )

                
            }
            }
            
    }.frame(width: 400,height:600)

}

我也尝试在 VStack 之外使用它,结果相同。

导航标题和按钮在预览模式下显示良好。但是当我运行该应用程序时,只显示标题。按钮不在那里。另请注意,如果我单击导航链接,工具栏上会有后退按钮。

这是一个屏幕截图。

想知道这是一个错误还是有人遇到过这种情况?

macos swiftui menubar
1个回答
0
投票

我尝试过,但没有遇到同样的问题。 这是我的代码。

import SwiftUI

struct ContentView: View {
    @State var projects = ["1", "2"]
    @State var projectName = ""
    var body: some View {
        VStack(alignment: .leading){
            NavigationStack{
                List(projects, id: \.self){ project in
                    NavigationLink(destination: ProjectDetailView(project: project)){
                        Text(project)
                    }
                }
                .navigationTitle("Projects")
                .toolbar{
                    ToolbarItem(placement: .navigation, content: {
                        HStack {
                            Button {
                                print(projectName)
                            } label: {
                                Image(systemName: "plus").imageScale(.large)
                            }
                            TextField("project name ", text: $projectName)
                        }
                    }
                    )
                }
            }
        }
    }
}

struct ProjectDetailView: View {
    let project: String
    var body: some View {
        Text(project)
    }
}

#Preview {
    ContentView()
}
© www.soinside.com 2019 - 2024. All rights reserved.