You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何在#Preview中使用自定义Binding对象?

SwiftUI #Preview 报错「Ambiguous use of 'Preview'」问题分析

以下是触发报错的代码:

import SwiftUI

struct TileDetailView: View {
    @Binding var tile: Tile  // 自定义对象
    @Binding var isShowingTileDetail: Bool
    
    var body: some View {
        Text("This is a tile.")
    }
}

#Preview {
    let bindingVar = Binding.constant(false)
    let aTile = AMClass(name: "A Tile")
    let bindingTile = Binding<Tile>(
        get: { aTile }
    )
    return TileDetailView(aTile: bindingTile, isShowingClassDetail: bindingVar)
}

代码存在的问题如下:

  • 初始化TileDetailView时参数名错误:应该传入tile和isShowingTileDetail,而非代码中的aTile和isShowingClassDetail
  • 创建Binding<Tile>不完整:仅实现了get闭包,Binding类型必须同时包含get和set两个闭包,满足双向绑定的读取、写入逻辑
  • 类型不兼容:aTile是AMClass的实例,但视图要求的是Tile类型的绑定对象,二者类型不匹配
  • 预览歧义报错的根源:上述多处语法、逻辑错误导致Xcode无法正确解析预览代码,最终触发「Ambiguous use of 'Preview'」错误

内容的提问来源于stack exchange,提问作者Michael May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:32:36