我正在升级一个具有一些快速视图的现有应用程序。现在我收到警告:
实例方法"imagePickerController(:didFinishPickingMediaWithInfo:("几乎匹配协议"UIImagePickerContrilerDelegate"的可选要求"imagePickerController(:DidFinishPixingMediaWithinfo:(">
函数:
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let image = info[.originalImage] as? UIImage {
self.onImagePicked(image)
}
self.onDismiss()
}
此外,我收到错误消息:
无法推断引用成员"originalImage"的上下文基础
有趣的是,如果我在一个新项目中复制代码,一切都很好(没有警告,没有错误(。为了检查我是否会受到现有项目中其他视图/方法的影响,我复制了现有项目并删除了所有其他文件,但带有图像选择器的文件除外——仍然是警告和错误。
是否存在任何可能是原因的设置或其他问题?任何帮助都将不胜感激——现在已经是第三天了。。。。
整个代码是:
import SwiftUI
public struct ImagePickerView: UIViewControllerRepresentable {
private let sourceType: UIImagePickerController.SourceType
private let onImagePicked: (UIImage) -> Void
@Environment(.presentationMode) private var presentationMode
public init(sourceType: UIImagePickerController.SourceType, onImagePicked: @escaping (UIImage) -> Void) {
self.sourceType = sourceType
self.onImagePicked = onImagePicked
}
public func makeUIViewController(context: Context) -> UIImagePickerController {
let picker = UIImagePickerController()
picker.sourceType = self.sourceType
picker.delegate = context.coordinator
return picker
}
public func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {}
public func makeCoordinator() -> Coordinator {
Coordinator(
onDismiss: { self.presentationMode.wrappedValue.dismiss() },
onImagePicked: self.onImagePicked
)
}
public class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
private let onDismiss: () -> Void
private let onImagePicked: (UIImage) -> Void
init(onDismiss: @escaping () -> Void, onImagePicked: @escaping (UIImage) -> Void) {
self.onDismiss = onDismiss
self.onImagePicked = onImagePicked
}
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let image = info[.originalImage] as? UIImage {
self.onImagePicked(image)
}
print("vor dismiss")
self.onDismiss()
}
public func imagePickerControllerDidCancel(_: UIImagePickerController) {
self.onDismiss()
}
}
}
项目格式是兼容Xcode 12.0,iOS部署目标是14.0,该项目最初还包括观看
得到了答案,无法解释,但不是
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
它与配合良好
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
然而,如果有人能解释的话,这个问题就解决了——非常欢迎