iOS - 如何将选定的图像放置到适当的图像视图 (imagePickerController)

iOS - How to place chosen images onto the appropriate image view (imagePickerController)

我正在使用 Swift 3,Xcode 8.2。我有一个自定义 Table View Cell(称为 MyCustomCell),其中有一个图像视图和一个按钮,单击该按钮可打开相机。用户可以添加更多这些单元格。我希望用户能够单击按钮、拍照,然后将其显示在该按钮的相应图像视图中。

我的问题是,现在它总是出现在第一个图像视图中,而不是其他图像视图中。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage : UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage {   
        let scancell = tableView.cellForRow(at: NSIndexPath(row: 0, section: 0) as IndexPath) as! MyCustomCell // it's this line that is wrong
        scancell.imgView.contentMode = .scaleAspectFit
        scancell.imgView.image = pickedImage
        scancell.cameraButton.isHidden = true
    };

    self.dismiss(animated: true, completion: nil)
}

我很难理解 imagePickerController 是如何被调用的,以及我是否可以传入用户点击的自定义单元格。

我想做这样的事情:

tableView.cellForRow(at: tableView.indexPath(for: cell)) 

其中 cell 以某种方式传递到参数中,但我不确定 imagePickerController 的签名是否可以修改,如果可以,它究竟是如何调用的?

如有任何帮助,我们将不胜感激。谢谢!

在您的 MyCustomCell class 中,您应该为 imagePicker 提供此功能,用户可以在 tableViewController 中 select 一张照片和 return 您的用户 chose.Then 的照片使用 cellForRow 的数据源方法(您还传递用户单击的单元格的 indexPath),您应该有类似

的内容
 func tableView_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cell = tableView.dequeueReusableCell(...) as! MyCustomCell
     let image = cell.pickImage
     cell.image = image

     return cell 
 }

在 cellForRow 方法中为按钮添加标签,并使用该标签获取单元格。

var Celltag = 0

    func tableView_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell((withIdentifier: "")) as! MyCustomCell
    cell.customButton.tag =  indexPath.row
    cell.customButton.addTarget(self, action: #selector(ButtonClickMethod), for: .touchUpInside)
    return cell
    }


    func ButtonClickMethod (sender:UIButton) {
    Celltag = sender.tag
    ........
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let pickedImage : UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage {   
            let scancell = tableView.cellForRow(at: NSIndexPath(row: Celltag, section: 0) as IndexPath) as! MyCustomCell 
            scancell.imgView.contentMode = .scaleAspectFit
            scancell.imgView.image = pickedImage
            scancell.cameraButton.isHidden = true
        };

        self.dismiss(animated: true, completion: nil)
    }

希望对您有所帮助。