如何从NavigationBar按钮导航到新视图,在SwiftUI中单击

Uni*_*orn 5 swift navigationview swiftui

学习SwiftUI。试图从导航栏中单击导航到新视图。
下面的示例代码:

var body: some View {
    NavigationView {
        List(0...< 5) { item in
            NavigationLink(destination: EventDetails()){
                EventView()
            }
        }
        .navigationBarTitle("Events")
            .navigationBarItems(trailing:
                NavigationLink(destination: CreateEvent()){
                    Text("Create Event")
                }
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 9

将 NavigationLink 放入按钮的标签中。

.navigationBarItems(
      trailing: Button(action: {}, label: {
         NavigationLink(destination: NewView()) {
              Text("")
         }
      }))
Run Code Online (Sandbox Code Playgroud)


Luk*_*ith 6

三个步骤对我有用:首先添加一个@State Bool来跟踪新视图的显示:

@State var showNewView = false
Run Code Online (Sandbox Code Playgroud)

添加 navigationBarItem,使用设置上述属性的操作:

 .navigationBarItems(trailing:
        Button(action: {
            self.showNewView = true
        }) {
            Text("Go To Destination")
        }
    )
Run Code Online (Sandbox Code Playgroud)

最后在您的视图代码中的某处添加一个导航链接(这依赖于在视图堆栈中的某处也有一个 NavigationView)

NavigationLink(
            destination: MyDestinationView(),
            isActive: $showNewView
        ) {
            EmptyView()
        }.isDetailLink(false)
Run Code Online (Sandbox Code Playgroud)


Chu*_*k H 3

这对我有用:

    .navigationBarItems(trailing: HStack { AddButton(destination: EntityAddView()) ; EditButton() } )
Run Code Online (Sandbox Code Playgroud)

在哪里:

struct AddButton<Destination : View>: View {

    var destination:  Destination

    var body: some View {
        NavigationLink(destination: self.destination) { Image(systemName: "plus") }
    }
}
Run Code Online (Sandbox Code Playgroud)