Navigation Q:不带导航按钮的导航

Navigation Q:不带导航按钮的导航,navigation,swiftui,Navigation,Swiftui,我正在尝试在我的应用程序中创建导航菜单。当前,当我单击导航栏中的按钮时,会出现一个演示模式。在那个模型中,我有一个列表中的按钮,不幸的是,我不知道如何工作。理想情况下,我希望按钮在单击时退出演示模式,并导航到特定视图(即,如果我在菜单中按“Profile”,我希望显示“Profile view”)。我尝试使用导航按钮,但它始终显示后退按钮/不退出演示模式 //View with button in nav bar struct HomeView : View { @State var

我正在尝试在我的应用程序中创建导航菜单。当前,当我单击导航栏中的按钮时,会出现一个演示模式。在那个模型中,我有一个列表中的按钮,不幸的是,我不知道如何工作。理想情况下,我希望按钮在单击时退出演示模式,并导航到特定视图(即,如果我在菜单中按“Profile”,我希望显示“Profile view”)。我尝试使用导航按钮,但它始终显示后退按钮/不退出演示模式

//View with button in nav bar

struct HomeView : View {
    @State var showNav: Bool = false
 var body: some View {
         NavigationView {
            List {
                Text("hi")
                }
                .navigationBarItems(leading:
                    Button(action: {
                        self.showNav = true
                    }) {
                        Image("Image")
                        .resizable()
                            .frame(width: 60, height:60)
                    }
            )
            }.presentation(showNav ? Modal(NavView(),
                                             onDismiss: { self.showNav = false }) : nil)}


//View With navigation controlls
struct NavView : View {

    @State var pressedHome: Bool = false
    @State var pressedProfile: Bool = false




    var body: some View {
            List{

                Button(action: {
                    self.pressedHome = true
                }) {
                    Text("Home")
                }

               Button(action: {
                    self.pressedProflie = true
                }) {
                    Text("Profile")
                }
    }


}

要取消显示视图,请在导航视图中添加一个绑定属性变量:-

struct NavView : View {
  @Binding var showNav: Bool
}
然后将其替换到第行下方

presentation(showNav ? Modal(NavView(),
                                             onDismiss: { self.showNav = false }) : nil)}
用这个

presentation(showNav ? Modal(NavView(showNav: $showNav),
                                             onDismiss: { self.showNav = false }) : nil)}
然后在两个按钮动作中添加这一行

Button(action: {
   self.pressedHome = true
   self.showNav.toggle()   //added this line
   }) {
      Text("Home")
  }
Button(action: {
   self.pressedHome = true
   self.showNav.toggle() //added this line
   }) {
      Text("Profile")
  }