我正在尝试创建一个 4x4 的图像网格,我希望它可以从 1 张图像缩放到 4 张图像。
当提供的图像来自常规数组时,此代码有效
var images = ["imageOne", "imageTwo", "imageThree", "imageFour"]
但是,如果数组来 self 们绑定(bind)的对象,则它不起作用:
@ObjectBinding var images = ImageLoader() //Where our array is in images.images
我的初始化程序看起来像这样:
init(imageUrls urls: [URL]){
self.images = ImageLoader(urls)
}
我的 ImageLoader
类如下所示:
class ImageLoader: BindableObject {
var didChange = PassthroughSubject<ImageLoader, Never>()
var images = [UIImage]() {
didSet{
DispatchQueue.main.async {
self.didChange.send(self)
}
}
}
init(){
}
init(_ urls: [URL]){
for image in urls{
//Download image and append to images array
}
}
}
问题出现在我的View
var body: some View {
return VStack {
if images.images.count == 1{
Image(images.images[0])
.resizable()
} else {
Text("More than one image")
}
}
}
编译时,我收到错误 generic parameter 'FalseContent' could not be inferred
,其中 FalseContent
是 SwiftUI buildEither(first:)< 的一部分
函数。
同样,如果 images
不是 ImageLoader
的绑定(bind),而是 String
的常规数组,它工作正常。
我不确定是什么导致了这个问题,它似乎是由绑定(bind)引起的,但我不确定还有什么办法可以做到这一点。
最佳答案
问题是你的图像初始化器,你传递了一个 UIImage,所以你应该这样调用它:
Image(uiImage: images.images[0])
请注意,在处理 View 时,流控制有点复杂,错误消息可能会产生误导。通过注释 View 的 IF 语句的“else”部分,编译器会向您显示它失败的真正原因。
关于swift - 无法推断通用参数 'FalseContent',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57024787/