我正在尝试创建一个4x4的图像网格,我希望它可以从1张图像放大到4张。
当提供的图像来自常规数组时,此代码有效
var images = ["imageOne", "imageTwo", "imageThree", "imageFour"]
但是,如果数组来自我们绑定到的对象,则它不起作用:
@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
的常规数组,而是绑定到String
,则可以正常工作。
我不确定是什么原因引起的,这似乎是由绑定引起的,但是我不确定该怎么做。
答案 0 :(得分:0)
问题在于您的图片初始化程序,您传递了UIImage,因此您应该这样称呼它:
Image(uiImage: images.images[0])
请注意,在处理视图时,流控制有些复杂,并且错误消息可能会引起误解。通过注释视图中IF语句的“其他”部分,编译器将向您显示其失败的真正原因。