SuperAPI AI 工具集

swiftui-patterns

通用与其它

查看项目

更新于 10-15 23:44

技能介绍

用途:为 SwiftUI 开发提供经验型决策框架。Claude 已掌握 SwiftUI 语法,本技能补充的是需要经验才能做出的判断,用于避免隐蔽 Bug。

主要能力:

  1. 属性包装器选择决策树:区分视图自建对象与父级传入对象,判断值类型用 @State、iOS 17+ 用 @Observable、旧版本用 @StateObject,父级传入的 ObservableObject 用 @ObservedObject,需要双向绑定用 @Binding。
  2. 导航架构选择:单列用 NavigationStack 配合 .navigationDestination,两列或三列用 NavigationSplitView。
  3. 模态选择:需要用户完成或取消的流程用 .sheet 或 .fullScreenCover,同流程内的渐进展示用 NavigationLink。
  4. 状态管理、列表与 ForEach、性能优化、tvOS 焦点系统、自适应布局等常见陷阱。

必要用法与关键限制:

  • 本地创建的对象必须用 @StateObject,用 @ObservedObject 会在每次视图更新时重建,状态随机丢失。
  • navigationDestination(for:) 必须挂在 NavigationStack 内部的视图上,挂在外层会静默失效。
  • Sheet 内容在呈现前创建,内部 @StateObject 每次打开都会重置,建议用 .sheet(item:) 传数据。
  • 避免 AnyView,改用 @ViewBuilder 以保留视图标识;避免在 body 中做昂贵计算,改用 .task。
  • 不要在动画中改变视图标识;不要从后台线程修改 @Published,应使用 @MainActor。
  • 异步加载用 .task 而非 .onAppear,以获得自动取消。
  • 不要存储可派生的状态;ForEach 不要用数组索引作 id;不要把 List 放进 ScrollView。
  • tvOS 自定义视图必须显式加 .focusable(),否则遥控器导航会跳过。

适用场景:iOS、iPadOS、tvOS 的 SwiftUI 应用开发,尤其是状态管理、导航、模态、列表与性能相关代码审查与实现。

限制:资料未提供安装命令、版本要求、收费方式与平台支持范围等具体信息。