我为两个不同的类(class)制作了两个委托(delegate)。一个用于 UITableViewCell
类,即 CameraTapDelegate
。
protocol CameraTapDelegate {
func showCameraOptions()
}
当用户点击 Cell 中的 UIImageView
时,它会打开相机或图库。当用户选择图像时 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
被执行。为了将此图像返回给单元格,我制定了另一个协议(protocol),但这次是在 ViewController
类中:
protocol UserImageDelegate {
func selectedImage(image: UIImage)
}
我在 ViewController
类的 didFinishPickingMediaWithInfo
中调用它,将选定的图像传递给 UITableViewCell
。所以我的问题是,在 UITableViewCell
类中我添加了 selectedImage
方法,但它没有被执行。
最佳答案
您必须记住为 UserImageDelegate
类型的委托(delegate)分配一个值。
UserImageDelegate
由 UITableViewCell
实现。知道图像被选中的对象是 ViewController
。因此 ViewController
应该定义属性:
weak var userImageDelegate: UserImageDelegate?
在 didFinishPickingMediaWithInfo
中,我希望看到:
userImageDelegate?.selectedImage(image: image)
现在唯一剩下的就是确保 userImageDelegate
引用实现它的 cell
,所以我想在 cellForRow
中我期望看到类似的东西:
self.userImageDelegate = cell
关于ios - 使用委托(delegate)方法设置 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082871/