LESSON 29 / 575 分钟

macOS:窗口、菜单栏与文件

桌面用户希望应用支持键盘、多个窗口和系统文件工作流。

用你的前端经验理解

已有 React 桌面网页经验能帮助信息组织,但 Cmd 快捷键、窗口行为和菜单栏不能只靠网页习惯设计。

为什么需要它

macOS 更强调连续工作、文件和多窗口。菜单栏工具还需要在主窗口不出现时提供入口。对“记着”这类事项助手,可以先实现菜单栏 popover 中的输入、列表和本地保存,再接入全局快捷键、语音或 AI,避免工具尚不能保存就先处理复杂系统集成。

它是怎样工作的

SwiftUI 的 Scene 描述窗口、设置和菜单栏等应用场景。MenuBarExtra 可以承载轻量入口,但它不是无限运行的后台服务器。普通应用快捷键与系统全局快捷键不是一回事,后者需要单独实现与冲突处理。文件选择器授予的访问范围也不同于随意读取任意磁盘路径。

把关键概念连起来

1

入口

根据任务选择 WindowGroup 或 MenuBarExtra;给菜单栏应用保留设置和退出方式。

2

交互

提供 Commands、快捷键、焦点移动、拖放和合适的窗口尺寸;支持用户改变窗口大小。

3

分发

App Store 与站外分发不同;站外分发通常关注 Developer ID 签名、公证以及 Gatekeeper。

设计一个菜单栏待办闭环

  1. 菜单栏打开后立即允许输入,回车保存到仓库;关闭 popover 不丢失已经确认保存的数据。
  2. 主窗口和菜单栏使用同一仓库,但各自的筛选与选择独立;菜单命令根据当前场景作用。
  3. 导出时让用户选择目标位置,处理取消和写入失败。需要长期访问用户选择文件时,再研究授权保留与恢复。

这里需要你亲自判断

别默认菜单栏 App 不需要权限、生命周期管理或分发签名。

做一个小练习

用 AI 实战中的“菜单栏待办”模板开始一个最小 macOS 工程。

  1. 实现菜单栏添加一项,并在主窗口看到同一记录。
  2. 关闭窗口、关闭 popover、退出 App 三种动作分别验证数据与进程行为。
展开参考思路与验收标准

窗口消失不是数据应被删除的信号。一个可靠的桌面小工具先保证输入、保存和恢复,再增加快捷入口;不能把模拟器里的 iOS 交互直接放大后当成 macOS 体验。

菜单栏应用至少应提供哪个基础控制?

继续查阅官方资料
Apple Developer 官方资料

本课聚焦核心认知。具体 API、系统要求与发布政策,以当前官方文档和工程验证为准。

答对理解题后即可标记完成