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

时间:2017-02-07 03:56:24

标签: ios swift xcode swift3 uiimagepickercontroller

我使用的是Swift 3,Xcode 8.2。我有一个自定义的表格视图单元格(称为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的签名是否可以被修改,如果是,它究竟是如何被调用的?

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

在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)
    }

希望这有帮助。

答案 1 :(得分:0)

在你的MyCustomCell类中你应该有imagePicker的这个功能,用户可以选择一张照片并返回你的用户选择的照片。然后,在带有cellForRow的tableViewController数据源方法中(你也传递了单元格的indexPath)用户点击)你应该有类似的东西

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

     return cell 
 }