Apple 已弃用 NavigationView,使用 NavigationStack 和 NavigationSplitView 实现 SwiftUI 导航

孙德本
2023-12-01

Apple 已弃用 NavigationView,它以前被用作封装视图堆栈,这些视图本质上是在呈现时推送并在关闭时弹出的视图。这是 iOS 导航从一开始就使用的熟悉方式,没有物理后退按钮,但顶部有一个导航栏,有一个后退按钮,描述了“后退”的位置。

有两种实现导航的新方法,但它们最终在 iPhone 上看起来非常相似,原因我将在后面讨论。

让我们开始吧!

NavigationStack

这个应用程序非常简单地从几个Hashable和Identifiable结构开始。

Screen存储导航状态的枚举必须是Hashable,因为新的初始化程序需要NavigationLink它,我稍后将使用它。为了成为Hashable相关的值也需要是Hashable。如果它们只是 String和 an ,这仍然是正确的Int,但我想利用ForEachwhich 要求类型也是Identifiable。作为原始值类型String并且Int是可互换的,并且它们没有定义它们的唯一属性。

我已将数据添加ContentView为两个数组。

我可以(并且可能应该)使用 anObservableObject来存储数据,但我宁愿编写更多代码来专门演示导航。

import Foundation

struct Word: Hashable, Identifiable {
    let id = UUID()
    let name: String
}

struct Number: Hashable, Identifiable {
    let id = UUID()
    let value: Int
}

enum Screen: Hashable {
    case word(Word)
    case number(Number)
 类似资料: