Need
分栏视图应用框架
Default options
NavigationSplitView、.sidebar 列表和 inspector(isPresented:)
Why it's needed
持久边栏、详情面板和检查器比触控优先的推入式导航更符合常见的 Mac 应用布局。
.md to the page URL.
Codex use case
使用 Codex 构建 Mac 原生 SwiftUI 应用框架,包含边栏、详情面板、检查器、命令和设置。
使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生的 NavigationSplitView 应用,保持边栏选中状态稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的 Settings 场景中。
使用 Codex 构建 Mac 原生 SwiftUI 应用框架,包含边栏、详情面板、检查器、命令和设置。
使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生的 NavigationSplitView 应用,保持边栏选中状态稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的 Settings 场景中。
使用 Codex 和 Build macOS Apps 插件,将应用构想转化为桌面原生的 NavigationSplitView 应用,保持边栏选中状态稳定,添加菜单、工具栏和键盘快捷键,并将偏好设置移至专用的 Settings 场景中。
相关链接
| Skill | Why use it |
|---|---|
| Build macOS Apps | 使用 macOS SwiftUI 模式、窗口管理、AppKit 互操作和构建/运行技能,创建由边栏、详情面板和检查器组成的布局,接入菜单和设置,并在以 Shell 为先的迭代流程中验证应用。 |
此用例可将应用构想转化为真正为桌面端打造的 Mac 应用框架,而不是把触控优先的界面堆栈拉伸到桌面端。先让 Codex 选择场景模型,再围绕稳定的边栏选中状态、详情界面以及用于辅助控件或元数据的检查器设计主窗口。

如果您希望 Codex 应用这种桌面结构,并让构建/运行循环以 Shell 为先,请使用 Build macOS Apps 插件。其中的 macOS SwiftUI 模式技能非常适合用于场景设计、边栏、检查器、命令和设置;如果仅有某项 Mac 特有行为无法由 SwiftUI 简洁实现,也适合添加少量 AppKit 桥接。
如果功能需要持久导航和稳定的选中项,请优先使用 NavigationSplitView。边栏中的行应保持原生、轻量,边栏应采用系统背景;自定义卡片或密集元数据只应放在详情面板或检查器中。
struct LibraryRootView: View {
@SceneStorage("LibraryRootView.selection") private var selection: Item.ID?
@SceneStorage("LibraryRootView.showInspector") private var showInspector = true
var body: some View {
NavigationSplitView {
List(selection: $selection) {
ForEach(items) { item in
Label(item.title, systemImage: item.systemImage)
.tag(item.id)
}
}
.listStyle(.sidebar)
.navigationTitle("Library")
} detail: {
ItemDetailView(selection: selection)
.inspector(isPresented: $showInspector) {
ItemInspectorView(selection: selection)
}
}
}
}
如果应用需要非常规的分栏尺寸、底层窗口协调或自定义响应者链行为,请让 Codex 保持 SwiftUI 应用框架不变,只针对这一处缺口添加所需的最小 AppKit 桥接。
Mac 用户应能通过菜单栏、工具栏和键盘快捷键找到重要操作。让 Codex 围绕同一组应用操作接入场景级 commands、上下文相关的菜单项和工具栏按钮,这样桌面端用户就不必费力寻找仅支持手势的控件。
@main
struct LibraryApp: App {
var body: some Scene {
WindowGroup {
LibraryRootView()
}
.commands {
CommandMenu("Library") {
Button("New Item") {
// Create a new item.
}
.keyboardShortcut("n")
Button("Toggle Inspector") {
// Route this command to the focused window or selected item state.
}
.keyboardShortcut("i", modifiers: [.command, .option])
}
}
Settings {
LibrarySettingsView()
}
}
}
如果命令应作用于当前显示的详情项,请使用 FocusedValue、场景状态或显式选择状态。如果某个快捷键会在多处注册,请让 Codex 统一其所有权,使应用只有一条清晰的命令执行路径。
Settings 中对于应用偏好设置,请使用专用 Settings 场景,并通过 @AppStorage 持久保存需要长期保留的用户选择。这通常比在主内容窗口中推入设置屏幕更符合 Mac 应用习惯。
struct LibrarySettingsView: View {
@AppStorage("showItemMetadata") private var showItemMetadata = true
var body: some View {
TabView {
Form {
Toggle("Show Item Metadata", isOn: $showItemMetadata)
}
.tabItem { Label("General", systemImage: "gearshape") }
}
.frame(width: 460, height: 260)
.scenePadding()
}
}
要充分利用本页,您的提示应明确应用构想、主要内容对象和核心操作,然后让 Codex 先围绕该工作流构建桌面应用框架。让智能体执行一项简单的构建/运行检查,并总结场景结构、命令接入、状态所有权,以及它必须通过 AppKit 桥接处理的任何边缘情况。
边栏中的每一行仅使用一个图标、一行标题,次要文本最多一行且应简短。将信息更丰富的卡片、计数器和元数据移到详情面板或检查器中,以便快速浏览源列表。
如果某项用户偏好影响整个应用,请让 Codex 将该控件放在 Settings 中,使用 @AppStorage 持久保存,并通过应用菜单提供入口,而不是再构建一个通过导航推入的设置屏幕。
如果该功能需要打开或保存面板、第一响应者控制或自定义 NSView,请仅在由 SwiftUI 持有的状态模型外围添加一小层 AppKit 边界,而不要用 AppKit 重写整个窗口。
Need
Default options
Why it's needed
Need
分栏视图应用框架
Default options
NavigationSplitView、.sidebar 列表和 inspector(isPresented:)
Why it's needed
持久边栏、详情面板和检查器比触控优先的推入式导航更符合常见的 Mac 应用布局。
Need
桌面端操作和设置
Default options
commands、CommandMenu、键盘快捷键和专用 Settings 场景
Why it's needed
菜单栏操作、快捷键和专用设置窗口让该功能拥有真正 Mac 应用的体验,而不是像被拉伸到桌面端的 iOS 屏幕。
Need
状态所有权
Default options
@State、@SceneStorage、@AppStorage 和显式选择绑定
Why it's needed
Codex 无需下意识地添加视图模型,也能使边栏选中状态、检查器可见性和用户偏好设置保持可预测。
Need
原生能力补充方案
Default options
通过小范围的 NSViewRepresentable 或 NSWindow 桥接使用 AppKit
Why it's needed
仅在 SwiftUI 无法简洁表达平台行为时使用 AppKit,同时让 SwiftUI 继续作为场景和选择状态的单一事实来源。
| Need | Default options | Why it's needed |
|---|---|---|
| 分栏视图应用框架 | NavigationSplitView 、 .sidebar 列表和 inspector(isPresented:) | 持久边栏、详情面板和检查器比触控优先的推入式导航更符合常见的 Mac 应用布局。 |
| 桌面端操作和设置 | commands 、 CommandMenu 、键盘快捷键和专用 Settings 场景 | 菜单栏操作、快捷键和专用设置窗口让该功能拥有真正 Mac 应用的体验,而不是像被拉伸到桌面端的 iOS 屏幕。 |
| 状态所有权 | @State 、 @SceneStorage 、 @AppStorage 和显式选择绑定 | Codex 无需下意识地添加视图模型,也能使边栏选中状态、检查器可见性和用户偏好设置保持可预测。 |
| 原生能力补充方案 | 通过小范围的 NSViewRepresentable 或 NSWindow 桥接使用 AppKit | 仅在 SwiftUI 无法简洁表达平台行为时使用 AppKit,同时让 SwiftUI 继续作为场景和选择状态的单一事实来源。 |
使用 Codex 构建 macOS SwiftUI 应用,建立 Shell 优先的构建和运行循环,并随着应用逐渐成熟,加入桌面原生场景、窗口、AppKit 和签名工作流。
使用 Codex 和 Build macOS Apps 插件,围绕窗口、侧边栏、命令或同步流程添加少量高信噪比的 `Logger` 事件,然后运行应用,并通过“控制台”或 `log...
使用 Codex 和 Build iOS Apps 插件,确定应用应通过 App Intents...