您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SwiftUI:如何弹出到根视图

SwiftUI:如何弹出到根视图

设置视图调节isDetailLinkfalse一个NavigationLink关键是让弹出到根的工作。isDetailLinktrue认设置,并且适用于包含的View。例如,在iPad横向上,分割视图是分开的,并isDetailLink确保目标视图将显示在右侧。因此,设置isDetailLinkfalse意味着目标视图将始终被推送到导航堆栈上。因此总是可以弹出。

连同设置isDetailLinkfalseonNavigationLink,将isActive绑定传递到每个后续的目标视图。最后,当您要弹出到根视图时,将该值设置为false,它将自动弹出所有内容

import SwiftUI

struct ContentView: View {
    @State var isActive : Bool = false

    var body: some View {
        NavigationView {
            NavigationLink(
                destination: ContentView2(rootIsActive: self.$isActive),
                isActive: self.$isActive
            ) {
                Text("Hello, World!")
            }
            .isDetailLink(false)
            .navigationBarTitle("Root")
        }
    }
}

struct ContentView2: View {
    @Binding var rootIsActive : Bool

    var body: some View {
        NavigationLink(destination: ContentView3(shouldPopToRootView: self.$rootIsActive)) {
            Text("Hello, World #2!")
        }
        .isDetailLink(false)
        .navigationBarTitle("Two")
    }
}

struct ContentView3: View {
    @Binding var shouldPopToRootView : Bool

    var body: some View {
        VStack {
            Text("Hello, World #3!")
            Button (action: { self.shouldPopToRootView = false } ){
                Text("Pop to root")
            }
        }.navigationBarTitle("Three")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

屏幕截图

Swift 2022/1/1 18:15:56 有288人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶