SwiftUI导航链接

时间:2020-02-12 15:47:20

标签: swiftui swiftui-navigationlink

我正在使用SwiftUI练习应用程序,但遇到了NavigationView / NavigationLink的问题。我目前正在使用大都会艺术博物馆API,我想创建一个部门列表,该部门与该部门中的另一个对象列表相关联,然后该列表对对象的信息进行分类。目前,我拥有的NavigationView / NavigationLink设置正在创建多个NavigationViews,并导致多个后退按钮/导航栏。有没有办法让新的NavigationView替换旧的导航视图,或者使它们相互配合工作?我知道如何在SwiftUI中创建序列的唯一方法是通过NavigationView / NavigationLink,但是两次创建它似乎是错误的处理方式。我有应用程序当前状态的屏幕截图。 App Image 这是我目前的代码。

struct ContentView: View {

@ObservedObject var model = DepartmentListViewModel()

var body: some View {
    NavigationView {
        List {
            ForEach(model.departments, id: \.self) { department in
                NavigationLink(destination: DetailView(viewModel: DetailListViewModel(selectedDepartment: department))) {
                    Text(department.displayName)
                }
            }
        }
        .navigationBarTitle("Departments")
    }
}
}
struct DetailView: View {
@ObservedObject var viewModel: DetailListViewModel

init(viewModel: DetailListViewModel) {
    self.viewModel = viewModel
}

var body: some View {
  NavigationView {
      List {
        ForEach(viewModel.objects, id: \.self) { object in
            NavigationLink(destination: ObjectView(viewModel: ObjectListViewModel(selectedObject: object))) {
                Text(String(object))
            }
          }
      }
      .navigationBarTitle("ObjectIDs")
  }
}
}

1 个答案:

答案 0 :(得分:1)

您不再需要在DetailView中使用NavigationView,第一个会处理