如何在 ImagePicker 控制器的单元格类中设置图像

Posted

技术标签:

【中文标题】如何在 ImagePicker 控制器的单元格类中设置图像【英文标题】:How do I set an image in a cell class from a ImagePicker Controller 【发布时间】:2020-09-27 19:10:17 【问题描述】:

我正在尝试将按钮的图像更改为用户在 imagePicker 中选择的图像,但我在 ViewController 类中呈现图像选择器并且按钮位于单元格类中。

我不确定如何从不同的班级进行设置。这是我用于展示图像选择器和按钮创建方式的代码:

这是我的 profileVC 类:

class UserProfileVC: UICollectionViewController, UICollectionViewDelegateFlowLayout, UserProfileHeaderDelegate 

    func handleEditBannerTapped(for header: ProfileHeader) 
        let imagePicker = UIImagePickerController()
        imagePicker.allowsEditing = true
        present(imagePicker, animated: true, completion: nil)
    


上面的代码工作正常,并显示设备上的所有图片供用户选择。

这是我的 ProfileHeader Cell 类

class ProfileHeader: UICollectionViewCell, UIImagePickerControllerDelegate, UINavigationControllerDelegate 

   lazy var profileBanner: UIButton = 
       let button = UIButton()
       button.clipsToBounds = true
      
       let imageTapped = UITapGestureRecognizer(target: self, action: #selector(handleBannerTapped))
       imageTapped.numberOfTapsRequired = 1
       button.isUserInteractionEnabled = true
       button.addGestureRecognizer(imageTapped)
       return button
   ()

    @objc func handleBannerTapped() 
        delegate?.handleEditBannerTapped(for: self)
    

如何将用户选择的图像设置为 UserProfileVC 类中的 profileBanner 按钮?

【问题讨论】:

【参考方案1】:

我假设UserProfileVC 是主类,其中包含一个集合视图,而ProfileHeader 是该集合视图内的一个单元格?您需要知道单元格的IndexPath,然后执行:

if let cell = collectionView.cellForItem(at: indexPath) as? ProfileHeader 
     cell.profileBanner.setImage(imageThatYouWant, for: .normal)

【讨论】:

以上是关于如何在 ImagePicker 控制器的单元格类中设置图像的主要内容,如果未能解决你的问题,请参考以下文章

我如何在“didselectitematindexpath”中调用单元格类结果页面

从自定义表格视图单元格类加载时如何调整单元格的高度?

无法在 Bundle 中为自定义表格视图单元格类加载 NIB

如何在 tableViewCell 中运行 imagePicker

如何在 Swift 的自定义单元格中获取值组件的 indexPath?

如何禁用自定义单元格中的按钮?