【问题标题】:How to fix the error "Function declares an opaque return type, but the return statements in its body do not have matching underlying types"?如何修复错误“函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型”?
【发布时间】:2021-08-28 18:25:46
【问题描述】:

导入 SwiftUI

结构FRemoteImage:查看{

@ObservedObject var imageLoader = ImageLoader()

var placeholder:Image

init(url: String, placeholder: Image = Image(systemName: "photo")) {
    self.placeholder = placeholder
    imageLoader.fetchImage(url: url)
}

var body: some View {
    if let image = self.imageLoader.downloadImage {
        return Image(uiImage: image)
            .resizable()
            .aspectRatio(contentMode: .fit)
            .frame(width: 55, height: 60, alignment: .center)
    }
    return placeholder
}

}

struct FRemoteImage_Previews: PreviewProvider { 静态变量预览:一些视图 { FRemoteImage(网址:“”) } }

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    body 在 SwiftUI 中是一个 ViewBuilder(它是 ResultBuilder 的一种类型),它有一些特殊的属性。要利用它,您需要删除显式的 return 语句并让它隐式返回视图层次结构:

    var body: some View {
        if let image = self.imageLoader.downloadImage {
            Image(uiImage: image) //<-- This gets returned
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 55, height: 60, alignment: .center)
        } else {
            placeholder  //<-- or, this gets returned
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2021-11-02
      相关资源
      最近更新 更多