SwiftUI 导航链接
SwiftUI NavigationLink
我正在开发一个 SwiftUI 练习应用程序,我 运行 遇到了 NavigationView/NavigationLink 的问题。我目前正在使用大都会艺术博物馆 API,我想制作一个部门列表,该部门列表会转到该部门中的另一个对象列表,然后该列表会转到对象的信息。目前,我的 NavigationView/NavigationLink 设置正在创建多个 NavigationView,并导致多个后退 buttons/navigation 栏。有没有办法让新的 NavigationView 替换旧的 NavigationView 或让它们相互配合工作?我知道如何在 SwiftUI 中创建一个 segue 的唯一方法是通过 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")
}
}
}
您的 DetailView 中不再需要 NavigationView
,第一个处理它
我正在开发一个 SwiftUI 练习应用程序,我 运行 遇到了 NavigationView/NavigationLink 的问题。我目前正在使用大都会艺术博物馆 API,我想制作一个部门列表,该部门列表会转到该部门中的另一个对象列表,然后该列表会转到对象的信息。目前,我的 NavigationView/NavigationLink 设置正在创建多个 NavigationView,并导致多个后退 buttons/navigation 栏。有没有办法让新的 NavigationView 替换旧的 NavigationView 或让它们相互配合工作?我知道如何在 SwiftUI 中创建一个 segue 的唯一方法是通过 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")
}
}
}
您的 DetailView 中不再需要 NavigationView
,第一个处理它