提问人:Michael May 提问时间:11/17/2023 更新时间:11/17/2023 访问量:37
如何在 SwiftUI 中将自定义 Binding 对象放入 #Preview?
How to put a custom Binding object in #Preview in SwiftUI?
问:
Xcode 为以下代码提供错误消息“Ambiguous use of 'Preview'”:
import SwiftUI
struct TileDetailView: View {
@Binding var tile: Tile // This is a custom object
@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)
}
请随时指出上述代码的问题。谢谢。
答:
1赞
son
11/17/2023
#1
这个怎么样?可用于初始化属性。如果 the 是协议,请将其替换为任何符合 Tile 的实现类、结构等。.constant
@Binding
Tile
#Preview {
TileDetailView(
tile: .constant(Tile()), //or TileImpl()
isShowingTileDetail: .constant(false)
)
}
评论
1赞
son
11/17/2023
也许您需要检查初始化函数。它应该起作用。我附上了一张图片作为输出。
0赞
Michael May
11/17/2023
谢谢,@son。是的,这行得通。我没有提到我省略了初始值设定项中的一些参数,因为它们具有默认值。但事实证明,这些参数也应该出现在 #Preview 的初始值设定项中。
评论