SwiftUI NavigationLink 弹出
SwiftUI NavigationLink pop
我已经使用 NavigationLink
导航到一个新视图,我想以编程方式返回到我所在的位置。在 swiftUI 中还有可能吗?我知道对于模态表示我们可以使用 .isPresented
环境值但是导航怎么样?
目前这肯定是一个错误。 Apple 提供样板代码以允许 "Back" 或 'pop' 功能内置到导航视图 'DetailView' 中。我唯一的猜测是 Apple 正在解决在后端 SwiftUI 中完全实施 Combine 以实施 'push' 和 'pop' 类型操作的问题。我无法想象 SwiftUI 在没有这个功能的情况下退出测试版,而不是像 RyanAshcraft 上面所做的那样创建一个 Combine 发布者来更新状态。
是的,您现在可以使用以下代码以编程方式弹出 NavigationLink 视图:
import SwiftUI
struct MainViewer : View{
@State var showView = false
var body : some View {
NavigationLink(destination:DestView(showView: self.$showView),isActive : self.$showView){
Text("Push View")
}
}
}
struct DestView : View{
@Binding var showView : Bool
var body : some View {
Button(action:{self.showView = false}){
Text("Pop Screen")
}
}
}
您真的可以简单地创建自定义后退按钮。只有两行代码
@Environment(\.presentationMode) var presentationMode
self.presentationMode.wrappedValue.dismiss()
示例:
import SwiftUI
struct FirstView: View {
@State var showSecondView = false
var body: some View {
NavigationLink(destination: SecondView(),isActive : self.$showSecondView){
Text("Push to Second View")
}
}
}
struct SecondView : View{
@Environment(\.presentationMode) var presentationMode
var body : some View {
Button(action:{ self.presentationMode.wrappedValue.dismiss() }){
Text("Go Back")
}
}
}
我已经使用 NavigationLink
导航到一个新视图,我想以编程方式返回到我所在的位置。在 swiftUI 中还有可能吗?我知道对于模态表示我们可以使用 .isPresented
环境值但是导航怎么样?
目前这肯定是一个错误。 Apple 提供样板代码以允许 "Back" 或 'pop' 功能内置到导航视图 'DetailView' 中。我唯一的猜测是 Apple 正在解决在后端 SwiftUI 中完全实施 Combine 以实施 'push' 和 'pop' 类型操作的问题。我无法想象 SwiftUI 在没有这个功能的情况下退出测试版,而不是像 RyanAshcraft 上面所做的那样创建一个 Combine 发布者来更新状态。
是的,您现在可以使用以下代码以编程方式弹出 NavigationLink 视图:
import SwiftUI
struct MainViewer : View{
@State var showView = false
var body : some View {
NavigationLink(destination:DestView(showView: self.$showView),isActive : self.$showView){
Text("Push View")
}
}
}
struct DestView : View{
@Binding var showView : Bool
var body : some View {
Button(action:{self.showView = false}){
Text("Pop Screen")
}
}
}
您真的可以简单地创建自定义后退按钮。只有两行代码
@Environment(\.presentationMode) var presentationMode
self.presentationMode.wrappedValue.dismiss()
示例:
import SwiftUI
struct FirstView: View {
@State var showSecondView = false
var body: some View {
NavigationLink(destination: SecondView(),isActive : self.$showSecondView){
Text("Push to Second View")
}
}
}
struct SecondView : View{
@Environment(\.presentationMode) var presentationMode
var body : some View {
Button(action:{ self.presentationMode.wrappedValue.dismiss() }){
Text("Go Back")
}
}
}