一个屏幕中的多个 NavigationView
Multiple NavigationView in a screen
我在一个屏幕上有 2 个 NavigationView。
当我点击列表中的 Go To ChildView 项目时,我想在 Parent Navigation 中导航。
当我点击列表中的其他项目之一时,我想在 Container Navigation
中导航
如何将视图推送到选定的 NavigationView ?我想决定从哪个导航推送视图。
父视图
struct Parent: View {
var body: some View {
NavigationView { // Parent Navigation
VStack {
SearchBarView()
ContainerView() // Container
}
.navigationTitle("Parent Navigation")
}
}}
容器视图
struct ContainerView: View {
var body: some View {
NavigationView { // Container Navigation
List(0..<20) { i in
if i == 0 {
Text("Go To Child View")
} else {
NavigationLink(
destination: ChildView(),
label: {
Text("Text \(i)")
})
}
}
.navigationTitle("Container Navigation")
.navigationBarTitleDisplayMode(.large)
}
}}
您需要将导航 link 放置在内部导航视图 之外,例如。在后台,如下所示,并以编程方式激活它。
struct ContainerView: View {
@State private var isActive = false
var body: some View {
NavigationView { // Container Navigation
List(0..<20) { i in
if i == 0 {
Button("Go To Child View") {
isActive = true // << here !!
}
} else {
NavigationLink(
destination: ChildView(),
label: {
Text("Text \(i)")
})
}
}
.navigationTitle("Container Navigation")
.navigationBarTitleDisplayMode(.large)
}
.background(
NavigationLink( // << here !!
destination: ChildView(),
isActive: $isActive,
label: { EmptyView() })
)
}
}
我在一个屏幕上有 2 个 NavigationView。 当我点击列表中的 Go To ChildView 项目时,我想在 Parent Navigation 中导航。 当我点击列表中的其他项目之一时,我想在 Container Navigation
中导航如何将视图推送到选定的 NavigationView ?我想决定从哪个导航推送视图。
父视图
struct Parent: View {
var body: some View {
NavigationView { // Parent Navigation
VStack {
SearchBarView()
ContainerView() // Container
}
.navigationTitle("Parent Navigation")
}
}}
容器视图
struct ContainerView: View {
var body: some View {
NavigationView { // Container Navigation
List(0..<20) { i in
if i == 0 {
Text("Go To Child View")
} else {
NavigationLink(
destination: ChildView(),
label: {
Text("Text \(i)")
})
}
}
.navigationTitle("Container Navigation")
.navigationBarTitleDisplayMode(.large)
}
}}
您需要将导航 link 放置在内部导航视图 之外,例如。在后台,如下所示,并以编程方式激活它。
struct ContainerView: View {
@State private var isActive = false
var body: some View {
NavigationView { // Container Navigation
List(0..<20) { i in
if i == 0 {
Button("Go To Child View") {
isActive = true // << here !!
}
} else {
NavigationLink(
destination: ChildView(),
label: {
Text("Text \(i)")
})
}
}
.navigationTitle("Container Navigation")
.navigationBarTitleDisplayMode(.large)
}
.background(
NavigationLink( // << here !!
destination: ChildView(),
isActive: $isActive,
label: { EmptyView() })
)
}
}