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)
}
希望对您有所帮助。
我正在使用 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)
}
希望对您有所帮助。