swiftui - 多级导航 SwiftUI

标签 swiftui

我有一个在 SwiftUI 中处理的主细节应用程序,但是一旦在第一个 DetailView 上,NavBar 中的 NavigationLink 就不再有效。我把它写成一个简单的演示:

struct NavView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Layer()) {Text("Go to Layer 1")}
        }
    }
}

struct Layer: View {
    var body: some View {
        Text("Welcome to Layer 1")
            .navigationBarItems(trailing: NavigationLink(destination: AnotherLayer()) { Text("Go to Layer 2") })
    }
}

struct AnotherLayer: View {
    var body: some View {
        Text("Welcome to Layer 2")
    }
}

一切都呈现出来,你可以点击 Layer 中的 navigationBarItem 但没有任何反应。

这是怎么回事?如何访问 AnotherLayer

最佳答案

用作 navigationBarItem 的 NavigationLink 将不起作用,无论您是在第一级还是第二级使用它,但 NavigationDestinationLink 可以解决问题。

import SwiftUI

struct TestSwift: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Layer()) {Text("Go to Level")}
        }
    }
}

struct Layer: View {
   let detailView = NavigationDestinationLink(AnotherLayer())

    var body: some View {
        VStack {
           Text("Text")

        }
        .navigationBarItems(trailing:
            Button(action: {
                self.detailView.presented?.value = true
            }, label: {
                Text("Present Now!")
            })
        )
    }
}

struct AnotherLayer: View {

    var body: some View {
        Text("Hello")
    }
}

关于swiftui - 多级导航 SwiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57256864/

相关文章:

swift - 将核心数据对象绑定(bind)到输入 SwiftUI

SwiftUI:在 ViewModel 中预览数据

SwiftUI 录制视频并实时预览

swiftUI -我想移动选项卡栏中项目的位置

ios - FileManager 无法在 Xcode 项目中找到 PDF 目录

SwiftUI - 可能的内存泄漏

SwiftUI:UIkit UIbezier 到 SwiftUI 路径

SwiftUI 预览失败并出现 __designTimeString 错误

SwiftUI ListView 没有访问 ForEach 循环

ios - 如何在 SwiftUI 中淡化 SF 符号的顶部或底部边缘?