24eb1fa0创建于 2025年8月12日历史提交
{
  "name": "picker",
  "examples": [
    {
      "title": "基础用法",
      "description": "选择器组件用于从一组选项中选择一个值。现在支持更好的触摸交互和3D视觉效果。",
      "image": "picker/basic.png",
      "code": "let options = [\n    SilkPickerOption(text: \"杭州\", value: \"Hangzhou\"),\n    SilkPickerOption(text: \"宁波\", value: \"Ningbo\"),\n    SilkPickerOption(text: \"温州\", value: \"Wenzhou\"),\n    SilkPickerOption(text: \"绍兴\", value: \"Shaoxing\"),\n    SilkPickerOption(text: \"湖州\", value: \"Huzhou\")\n]\n\nlet columns = [SilkPickerColumn(options)]\n\nSilkPicker(\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions(),\n    confirm: { values, indexes =>\n        SilkToast.toast(\"选择了: ${values.toString()}\")\n    }\n)"
    },
    {
      "title": "多列选择",
      "description": "通过传入多个 `SilkPickerColumn` 实现多列选择,支持工作日时间段选择等场景。",
      "image": "picker/multi-column.png",
      "code": "let columns = [\n    SilkPickerColumn([\n        SilkPickerOption(text: \"周一\", value: \"Monday\"),\n        SilkPickerOption(text: \"周二\", value: \"Tuesday\"),\n        SilkPickerOption(text: \"周三\", value: \"Wednesday\"),\n        SilkPickerOption(text: \"周四\", value: \"Thursday\"),\n        SilkPickerOption(text: \"周五\", value: \"Friday\")\n    ]),\n    SilkPickerColumn([\n        SilkPickerOption(text: \"上午\", value: \"Morning\"),\n        SilkPickerOption(text: \"下午\", value: \"Afternoon\"),\n        SilkPickerOption(text: \"晚上\", value: \"Evening\")\n    ])\n]\n\nSilkPicker(\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions(title: \"选择时间\")\n)"
    },
    {
      "title": "级联选择",
      "description": "支持省市区级联选择,组件会自动检测数据结构并构建级联关系。",
      "image": "picker/cascade.png",
      "code": "let cascadeOptions = [\n    SilkPickerOption(\n        text: \"浙江\",\n        value: \"Zhejiang\",\n        children: [\n            SilkPickerOption(\n                text: \"杭州\",\n                value: \"Hangzhou\",\n                children: [\n                    SilkPickerOption(text: \"西湖区\", value: \"Xihu\"),\n                    SilkPickerOption(text: \"余杭区\", value: \"Yuhang\")\n                ]\n            ),\n            SilkPickerOption(\n                text: \"温州\",\n                value: \"Wenzhou\",\n                children: [\n                    SilkPickerOption(text: \"鹿城区\", value: \"Lucheng\"),\n                    SilkPickerOption(text: \"瓯海区\", value: \"Ouhai\")\n                ]\n            )\n        ]\n    )\n]\n\nlet columns = [SilkPickerColumn(cascadeOptions)]\n\nSilkPicker(\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions(title: \"选择地区\")\n)"
    },
    {
      "title": "禁用选项",
      "description": "通过设置 `SilkPickerOption` 的 `disabled` 属性可以禁用特定选项,组件会自动跳过禁用选项。",
      "image": "picker/disabled.png",
      "code": "let options = [\n    SilkPickerOption(text: \"杭州\", value: \"Hangzhou\", disabled: true),\n    SilkPickerOption(text: \"宁波\", value: \"Ningbo\"),\n    SilkPickerOption(text: \"温州\", value: \"Wenzhou\")\n]\n\nlet columns = [SilkPickerColumn(options)]\n\nSilkPicker(\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions()\n)"
    },
    {
      "title": "搭配弹出层使用",
      "description": "Picker 通常与 Popup 弹出层组件搭配使用,实现底部弹起的选择器效果。",
      "image": "picker/popup.png",
      "code": "@State var showPicker: Bool = false\n\nSilkCell(\n    props: SilkCellOptions(title: \"选择城市\", value: \"内容\", isLink: true)\n).onClick { \n    showPicker = true \n}\n\nSilkPopup(\n    show: showPicker,\n    props: SilkPopupOptions(position: SilkPopupPosition.BOTTOM, round: true)\n) {\n    SilkPicker(\n        columns: ObservedArrayList(columns),\n        options: SilkPickerOptions(title: \"选择城市\"),\n        confirm: { values, indexes => \n            showPicker = false\n            // 处理选择结果\n        },\n        cancel: { => showPicker = false }\n    )\n}"
    },
    {
      "title": "双向绑定",
      "description": "使用 `SilkPickerLink` 组件实现数据的双向绑定,选择结果会自动同步到绑定的变量。",
      "image": "picker/link.png",
      "code": "@State var selectedValues: ObservedArrayList<String> = ObservedArrayList([])\n\nSilkPickerLink(\n    values: selectedValues,\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions()\n)\n\n// selectedValues会自动更新为选中的值"
    },
    {
      "title": "加载状态",
      "description": "通过 `loading` 属性设置选择器为加载状态,支持响应式更新。",
      "image": "picker/loading.png",
      "code": "@State var pickerOptions = SilkPickerOptions()\n\n// 显示加载状态\npickerOptions.loading = true\n\nSilkPicker(\n    columns: ObservedArrayList(columns),\n    options: pickerOptions\n)\n\n// 加载完成后隐藏\npickerOptions.loading = false"
    },
    {
      "title": "自定义配置",
      "description": "通过 `SilkPickerOptions` 可以自定义选择器的各种配置,包括标题、按钮文字、选项高度等。",
      "image": "picker/custom.png",
      "code": "SilkPicker(\n    columns: ObservedArrayList(columns),\n    options: SilkPickerOptions(\n        title: \"请选择\",\n        confirmButtonText: \"确定\",\n        cancelButtonText: \"取消\",\n        itemHeight: 50.vp,\n        visibleItemCount: 5,\n        toolbarPosition: false,  // 工具栏在底部\n        readonly: false\n    ),\n    confirm: { values, indexes =>\n        // 确认回调\n    },\n    cancel: { =>\n        // 取消回调\n    },\n    change: { values, indexes, columnIndex =>\n        // 选项变化回调\n    }\n)"
    }
  ]
}