【问题标题】:How do I navigate to a new View from a navigationBarItem without using Sheets?如何在不使用表格的情况下从 navigationBarItem 导航到新视图?
【发布时间】:2020-05-11 20:13:16
【问题描述】:

我的应用程序的导航栏中有一个“添加”按钮,我想显示另一个填充视图的视图,而不是像使用表格时默认显示的视图那样模态显示。

代码如下:

.navigationBarItems(leading: EditButton(), trailing: Button(action: {
         self.showingAddScreen.toggle()
     }) {
         Image(systemName: "plus")
     })
     .sheet(isPresented: $showingAddScreen) {
         NavigationView {
             AddTaskView().environment(\.managedObjectContext, self.moc)
         }
 }

NavigationLink 将另一个视图推入堆栈。是否可以将 NavigationLinknavigationBarItems 一起使用,还是有更好的方法来全屏显示所需的视图?

【问题讨论】:

    标签: navigation swiftui


    【解决方案1】:

    在条形按钮项目中使用 NavigationLink 没有问题。

    为了让代码更简洁,而不是像这样创建内联代码

    .navigationBarItems(trailing: NavigationLink(destination: SecondView()) { Image(systemName: "plus") })
    

    我会创建一个计算属性

    var addButton: some View {
        NavigationLink(destination: SecondView()) { Image(systemName: "plus") })
    }
    
    // [...]
    .navigationBarItems(trailing: addButton)
    
    

    确保您仅在第一个视图中使用NavigationView

    如果您想要更复杂的内容,请查看此帖子 How To Navigate Between Views In SwiftUI By Using An @ObservableObject

    这是我在当前项目中使用的

    【讨论】:

    • 我也喜欢这个选项,因为它提供了一种构建导航选项的简洁方式。谢谢。
    【解决方案2】:

    你尝试过这样的事情吗?

    .navigationBarItems(leading: NavigationLink(destination: YourAnotherView(), label: {
                    Text("Your Label or Icon")
                }), trailing: NavigationLink(destination: YourAnotherView(), label: {
                    Text("Your label or Icon")
                }))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2016-09-10
      • 2013-02-21
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2018-09-25
      相关资源
      最近更新 更多