每个列表元素都可以导航到 SwiftUI 中的新视图吗?
Can each list element navigate to a new view in SwiftUI?
我是 SwiftUI 的新手,我正在尝试创建一个列表,其中包含大学学位课程中的每个模块。我希望(单击时)每个模块导航到一个单独的新视图。这是我希望达到的目标:
主页 -> 列表页 -> 每个相应的模块页面。
NavigationLink
似乎对所有列表元素只有一个可能的目的地。有什么办法吗?先感谢您。
这是我当前的代码:
struct ListView: View {
var modules: [Module] = []
var body: some View {
NavigationView {
List(modules) { module in
NavigationLink(destination: QuizView()) {
VStack(alignment: .leading) {
Text(module.name)
Text("\(module.questions) questions")
.foregroundColor(.secondary)
.font(.subheadline)
}
}
}
.navigationBarTitle(Text("Modules"))
}
}
}
您可以尝试根据某些值(例如 module.name
)返回特定的 View
:
var modules: [Module] = []
var body: some View {
NavigationView {
List(modules) { module in
NavigationLink(destination: moduleView(name: module.name)) {
VStack(alignment: .leading) {
Text("\(module.id)")
}
}
}
.navigationBarTitle(Text("Modules"))
}
}
@ViewBuilder
func moduleView(name: String) -> some View {
switch name {
case "module 1":
View1()
case "module 2":
View2()
default:
View3()
}
}
我是 SwiftUI 的新手,我正在尝试创建一个列表,其中包含大学学位课程中的每个模块。我希望(单击时)每个模块导航到一个单独的新视图。这是我希望达到的目标:
主页 -> 列表页 -> 每个相应的模块页面。
NavigationLink
似乎对所有列表元素只有一个可能的目的地。有什么办法吗?先感谢您。
这是我当前的代码:
struct ListView: View {
var modules: [Module] = []
var body: some View {
NavigationView {
List(modules) { module in
NavigationLink(destination: QuizView()) {
VStack(alignment: .leading) {
Text(module.name)
Text("\(module.questions) questions")
.foregroundColor(.secondary)
.font(.subheadline)
}
}
}
.navigationBarTitle(Text("Modules"))
}
}
}
您可以尝试根据某些值(例如 module.name
)返回特定的 View
:
var modules: [Module] = []
var body: some View {
NavigationView {
List(modules) { module in
NavigationLink(destination: moduleView(name: module.name)) {
VStack(alignment: .leading) {
Text("\(module.id)")
}
}
}
.navigationBarTitle(Text("Modules"))
}
}
@ViewBuilder
func moduleView(name: String) -> some View {
switch name {
case "module 1":
View1()
case "module 2":
View2()
default:
View3()
}
}