macOS 原生应用的窗口与导航管理
SwiftUI 提供了 NavigationSplitView、NavigationStack、TabView 等多种导航容器,它们在 macOS、iPadOS 和 iOS 上的行为各有不同,组合方式也不止一种。
这篇文章整理了我在实际开发中对 macOS 原生应用导航管理的观察与总结,希望能帮助你在项目初期做出更清晰的架构选择。
创建三列应用
NavigationSplitView 是天然首选
如果你的应用始终需要三列结构——比如 Notes 的「文件夹 → 笔记列表 → 编辑器」,或 Mail 的「邮箱 → 邮件列表 → 邮件正文」——那么 NavigationSplitView 的三列形态就是最自然的方案:
NavigationSplitView {
// sidebar
} content: {
// 中间列
} detail: {
// 详情列
}
在这种场景下,系统的原生体验非常稳定,toolbar、标题栏与分栏折叠行为都与系统预期一致,几乎不需要额外干预。
混合列数场景:谨慎切换容器形态
实际项目中更常见的情况是: