如何解决无法推断复杂的闭包返回类型;在处理简单布尔状态时添加显式类型以消除歧义
我真的不明白此错误的来源。它停留在“返回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>) {
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。