作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果不显示第二个 NavigationView
,我找不到从 ViewB 转到 ContentView 的方法在另一个之上NavigationView
.
struct ContentView: View {
var body: some View {
NavigationView{
VStack {
Text("Go to ViewA")
NavigationLink(destination: ViewA()) {Text("Go")}
}.navigationBarTitle("ContentView")
}
}
}
struct ViewA: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Go to ViewB")
NavigationLink(destination: ViewB()) {Text("Go to B")}
Text("Go back")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) {Text("Go to ContentView")}
}.navigationBarTitle("ViewA")
}
}
struct ViewB: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Go Home")
NavigationLink(destination: ContentView()) {Text("Go")}
Text("Go back")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) {Text("Go to ViewB")}
}.navigationBarTitle("ViewB")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
@IBAction func unwindToVCMain(segue:UIStoryboardSegue) { }
}
performSegue(withIdentifier: "unwindToVcMain", sender: nil)
最佳答案
使用 Swiftui NavigationLink
首先,将您的第一个 View 嵌入到导航 Controller 中。
然后插入一个导航链接到下一个 View 。 NavigationLink 有不同的初始化程序。
用 isActive
选择这个范围:
一开始有点令人费解,但是 isActive
NavigationLink
中的参数变成 true
当点击链接并且导航移动到下一个屏幕时。
It creates an instance that presents a destination when active
struct ContentView: View {
@State private var isActive: Bool = false
var body: some View {
NavigationView {
NavigationLink(
destination: SecondView(isActive: $isActive),
isActive: $isActive,
label: {
Text("Go to second View")
})
.navigationTitle("MainView")
}
}
}
我的第二个观点:
struct SecondView: View {
@Binding var isActive: Bool
var body: some View {
NavigationLink("Go to Third View",destination: ThirdView(isActive: $isActive))
.navigationTitle("Second View")
}
}
这里是放松按钮,但它可以在任何 View 中。
isActive = false
在这里做一些魔术!
struct ThirdView: View {
@Binding var isActive: Bool
var body: some View {
Button("Unwind!"){
isActive = false
}
.navigationTitle("Last View!")
}
}
关于swiftui - 如何在 SwiftUI 中放松到 MainView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59479536/
我是一名优秀的程序员,十分优秀!