首页 > 解决方案 > SwiftUI - TabView 中的 OnExitCommand

问题描述

我最近一直在尝试制作一个 tvOS 应用程序,但遇到了以下相当烦人的问题。我不能在 TabView 中使用导航,并且仍然有删除菜单按钮带我回到以前的状态。

struct TestView: View {
    
    @State var selection : Int = 0
    
    var body: some View {
        TabView(selection: self.$selection) {
            ExpView()
            .tabItem {
                HStack {
                    Image(systemName: "magnifyingglass")
                    Text("Explore")
                }
            }
            .tag(0)
        }
    }
}

struct ExpView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: DetailView(title: "Hey")) {
                Text("Detail")
            }
        }
    }
}

struct DetailView: View {
    var title : String
    var body: some View {
        VStack {
            Text(title)
        }
    }
}

我的问题是:有没有办法让菜单按钮回到层次结构中的上一个视图而不完全关闭应用程序?

标签: swiftxcodeswiftuitvos

解决方案


您不需要在 Menu 上调用dismiss,它会为 NavigationLink 自动调用(因此再调用一次dismiss退出到主菜单)

这里是固定视图。使用 Xcode 11.4 测试

struct ExploreView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: DetailView(title: "Hey")) {
                Text("Detail")
            }
        }
    }
}

struct DetailView: View {

    var title : String
    var body: some View {
        VStack {
            Text(title)
        }
    }
}

推荐阅读