我使用的是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
的签名是否可以被修改,如果是,它究竟是如何被调用的?
非常感谢任何帮助。谢谢!
答案 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
}