我已经为两个不同的班级委派了两名代表。一个是一个 UITableViewCell 类别为 CameraTapDelegate .
UITableViewCell
CameraTapDelegate
protocol CameraTapDelegate { func showCameraOptions() }
当用户点击 UIImageView 在单元格中。当用户选择图像时 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 已执行。为了把这张照片还给cell,我制定了另一个协议,但这次 ViewController 类别:
UIImageView
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
ViewController
protocol UserImageDelegate { func selectedImage(image: UIImage) }
我打过电话 didFinishPickingMediaWithInfo 在里面 视图控制器 类将所选图像传递给 UITableViewCell . 所以我的问题是 UITableViewCell 我添加的类 selectedImage 方法,但未执行该方法。
didFinishPickingMediaWithInfo
视图控制器
selectedImage
您必须记住为 UserImageDelegate 类型
UserImageDelegate
UserImageDelegate 由实施 UITableViewCell . 知道已选择图像的对象是 ViewController . 因此 视图控制器 应定义属性:
weak var userImageDelegate: UserImageDelegate?
在里面 didFinishPickingMediaWithInfo 我希望看到:
userImageDelegate?.selectedImage(image: image)
现在唯一剩下的就是确保 userImageDelegate 参考 cell 这实现了它,所以我想 cellForRow 我希望看到类似的情况:
userImageDelegate
cell
cellForRow
self.userImageDelegate = cell