无法推断复杂的闭包返回类型;添加显式类型以消除处理简单布尔状态时的歧义



我真的不明白这个错误是从哪里来的。它停留在"返回Hstack"线上。有人能帮我克服这个错误吗?

我应该创建View的子类并将其插入当前Image视图所在的位置吗?

struct ContentView: View {
@State private var sensitivity: Double = 50
@State private var imageUrl: URL = URL(string: "http://localhost")!
@State private var imageDropped = false

var body: some View {
let dropDelegate = MyDropDelegate(imageUrl: $imageUrl, imageDropped: $imageDropped)

return HStack {
VStack {
Text(/*@START_MENU_TOKEN@*/"Input Video"/*@END_MENU_TOKEN@*/)
.padding(.top)
Image(NSImage())
.padding(.leading)
.frame(width: 400.0, height: 200.0)
Text(/*@START_MENU_TOKEN@*/"Mask Image"/*@END_MENU_TOKEN@*/)
Image(self.imageDropped ? NSImage(byReferencing: imageUrl) : NSImage())
.padding(.bottom)
.frame(width: 100.0, height: 100.0)
.onDrop(of: ["public.file-url"], delegate:dropDelegate)
}
VStack {
Spacer()
Text("Sensitivity")

Slider(value: $sensitivity, in: 0...100, step:10)
.frame(width: 150.0)
Spacer()


Button(action: {print (self.sensitivity)} ) {
Text(/*@START_MENU_TOKEN@*/"Run"/*@END_MENU_TOKEN@*/)
}
Spacer()
.frame(height: 20.0)
}
}
}
}

正如SwiftUI中经常发生的那样,错误被错误检测到。您使用了不正确的Image构造函数(应该是Image(nsImage: )

这是固定部件。使用Xcode 12b3进行测试。

return HStack {
VStack {
Text(/*@START_MENU_TOKEN@*/"Input Video"/*@END_MENU_TOKEN@*/)
.padding(.top)
Image(nsImage: NSImage())      // << here !!
.padding(.leading)
.frame(width: 400.0, height: 200.0)
Text(/*@START_MENU_TOKEN@*/"Mask Image"/*@END_MENU_TOKEN@*/)
Image(nsImage: self.imageDropped ?                    // << here !!
NSImage(byReferencing: imageUrl) : NSImage())
.padding(.bottom)
.frame(width: 100.0, height: 100.0)
.onDrop(of: ["public.file-url"], delegate:dropDelegate)
}

注意:我认为MyDropDelegate定义正确

以下是我复制用于编译的内容:

class MyDropDelegate: DropDelegate {
func performDrop(info: DropInfo) -> Bool {
return true
}
init(imageUrl: Binding<URL>, imageDropped: Binding<Bool>) {
}
}

相关内容

  • 没有找到相关文章

最新更新