Ios 图像视图从库中选择“新建”后图像未更改

Ios 图像视图从库中选择“新建”后图像未更改,ios,swift,xcode,Ios,Swift,Xcode,首先,我想说的是,我绝不是一个经验丰富的Swift程序员,所以如果有人帮我调试我的问题,那么我很抱歉。只要发表评论,我会补充任何必要的东西来帮助你帮助我 我遵循苹果公司关于如何使用Swift开发iOS应用程序的指南(如图所示) 但出于某种原因,我得到了这个警告: 实例方法“imagePickerController(picker:didFinishPickingMediaWithInfo:)”几乎与协议“UIImagePickerController”的可选要求“imagePickerContr

首先,我想说的是,我绝不是一个经验丰富的Swift程序员,所以如果有人帮我调试我的问题,那么我很抱歉。只要发表评论,我会补充任何必要的东西来帮助你帮助我

我遵循苹果公司关于如何使用Swift开发iOS应用程序的指南(如图所示)

但出于某种原因,我得到了这个警告:

实例方法“imagePickerController(picker:didFinishPickingMediaWithInfo:)”几乎与协议“UIImagePickerController”的可选要求“imagePickerController(uU2;:didFinishPickingMediaWithInfo:)”匹配

我试图通过使用@nonobjc并将其设置为private来抑制该问题。问题是新图像没有取代旧图像。相反,它在输出中给了我以下错误:

[通用]使用未知类型创建图像格式是一个错误

这是与我的点击手势和图像拾取有关的代码:

// MARK: UIImagePickerControllerDelegate

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true, completion: nil)
    }

     func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        // The info dictionary contains multiple representations of the image, and this uses the original.
        let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage

        // Set photoImageView to display the selected image.
        photoImageView.image = selectedImage

        // Dismiss the picker.
        dismiss(animated: true, completion: nil)
    }

    // MARK: Actions

    @IBAction func selectTapGestureFromPhotoLibrary(_ sender: UITapGestureRecognizer) {
        // Hide the keyboard
        nameTextField.resignFirstResponder()

        // UIImagePickerController allows users to pick media from their photo library!

        let imagePickerController = UIImagePickerController()

        // Only allow photos to be picked, not taken

        imagePickerController.sourceType = .photoLibrary
        imagePickerController.delegate = self
        present(imagePickerController, animated: true, completion: nil)

    }
如果我的问题不够清楚,我需要帮助弄清楚为什么我的应用程序中的图像没有改变,尽管我已经按照指南进行了操作。我已经注意到一些我认为与Xcode更新有关的问题,但与指南无关

值得一提的是,我已经将info.plist设置为允许我访问所有必要的安全特权

我正在运行iOS 10.1和Xcode 8.1

发现了一个类似的问题,加上@Larme的评论帮助我解决了这个问题:


代码正确,请检查并确保已连接所有必要的插座。

代码正确,请检查并确保已连接所有必要的插座。

func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo:[字符串:任意])
不是Swift 3的正确方法。正如编译器所说,它应该是
func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo:[String:Any])
(方法签名随Swift 3更改)。如果你放了一个断点,或者在其中记录了日志,你应该会看到它并没有被调用。@Larme天哪。。。我想我太专注于潜在的修复,而没有阅读警告。在整个指南中有3-4条类似的警告,所以你可能认为我现在已经知道这些问题了…:/如果你回答,我就接受。希望这能帮助其他人理解我在那里解释的相同情况:方法不同,但解释仍然有效。只是要小心警告的内容,当你读到Swift时,如果它是Swift 1、2、2.2或3,你可能会做一些小的调整。奇怪的是,我在谷歌搜索时没有看到这个问题,因为它涵盖了我面临的完全相同的问题。。。不管怎样,当你把答案贴出来的时候,我非常乐意接受你的答案。在此期间,我将添加一个对您在评论中提到的问题的引用,以防有人在找到其他问题之前点击此问题!我把这个问题标为重复问题。在我看来,这是同一个问题。您可以选择这样标记自己的问题,您的问题仍然可见,但也指向重复的问题。
func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo:[String:Any])
不是Swift 3正确的方法。正如编译器所说,它应该是
func imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo:[String:Any])
(方法签名随Swift 3更改)。如果你放了一个断点,或者在其中记录了日志,你应该会看到它并没有被调用。@Larme天哪。。。我想我太专注于潜在的修复,而没有阅读警告。在整个指南中有3-4条类似的警告,所以你可能认为我现在已经知道这些问题了…:/如果你回答,我就接受。希望这能帮助其他人理解我在那里解释的相同情况:方法不同,但解释仍然有效。只是要小心警告的内容,当你读到Swift时,如果它是Swift 1、2、2.2或3,你可能会做一些小的调整。奇怪的是,我在谷歌搜索时没有看到这个问题,因为它涵盖了我面临的完全相同的问题。。。不管怎样,当你把答案贴出来的时候,我非常乐意接受你的答案。在此期间,我将添加一个对您在评论中提到的问题的引用,以防有人在找到其他问题之前点击此问题!我把这个问题标为重复问题。在我看来,这是同一个问题。您可以选择标记自己的问题,您的问题仍然可见,但也指向重复的问题。