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
相关产品推荐
相关产品推荐

