gpt4 book ai didi

ios - Swift - 从 UICollectionViewCell 获取 UIImage

转载 作者:行者123 更新时间:2023-11-28 09:35:02 25 4
gpt4 key购买 nike

我有一个 collectionView,其中每个 cell 都包含一个 UIImage 和一个空的 UIButton 。如何显示用户点击的图片?

class ImageCollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout{

@IBOutlet weak var imageCollectionView: UICollectionView!

let images: [UIImage] = [
UIImage(named: "beerImage")!,
UIImage(named: "christmasImage")!,
UIImage(named: "goalImage")!,
UIImage(named: "travelImage")!,
UIImage(named: "rollerImage")!,
UIImage(named: "giftImage")!,
UIImage(named: "shirtImage")!,
UIImage(named: "dressImage")!,

]

let columnLayout = FlowLayout(
itemSize: CGSize(width: 150, height: 150),
minimumInteritemSpacing: 30,
minimumLineSpacing: 10,
sectionInset: UIEdgeInsets(top: 20, left: 20, bottom: 10, right: 20)
)

var colViewWidth: CGFloat = 0.0

override func viewDidLoad() {

self.imageCollectionView.collectionViewLayout = columnLayout

super.viewDidLoad()

imageCollectionView.dataSource = self
imageCollectionView.delegate = self
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! ImageCollectionViewCell

cell.imageView.image = images[indexPath.item]
cell.layer.cornerRadius = 2
return cell
}

@IBAction func imageButtonTapped(_ sender: Any) {
print("tapped")
}


@IBAction func closeButtonTapped(_ sender: Any) {
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let HomeViewController = storyBoard.instantiateViewController(withIdentifier: "HomeVC") as! ExampleViewController
self.present(HomeViewController, animated: false, completion: nil)
}
}

更新

最后我想将该图像传递给另一个 ViewController。我这样试过,但图片没有显示在另一个 ViewController 中:

ViewControllerA

var tappedImage = UIImage()
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
tappedImage = images[indexPath.row]
}

var showPopUpView = true

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print(showPopUpView)
var vc = segue.destination as! ExampleViewController
vc.pickedImage = self.tappedImage
vc.ShowPopUpView = self.showPopUpView

}

ViewControllerB

    var pickedImage = UIImage()

override func viewDidLoad() {
super.viewDidLoad()

imagePreview.image = pickedImage

最佳答案

由于评论中的对话:

操作顺序应该是:

  1. 用户点击单元格
  2. 根据所选单元格的indexPath获取图片
  3. 将其设置为临时变量 (tappedImage)
  4. 执行转场
  5. 将临时图像传递给目的地的临时图像(pickedImage)
  6. 加载目的地的 View
  7. 显示图像。

似乎您缺少其中一个步骤(可能是第 3 步,因为您没有在 ...didSelectItemAt indexPath... 中调用 performSegue 而它也许根本没有被调用!尝试在那里打印一些东西并检查它是否是真的)

或者您可能会打乱流程(可能您在目标的View 加载后设置图像,结果是看不到它。)

调试:

尝试在每个变量上打印您有权访问的所有变量(例如 tappedImagepickedImageimages[indexPath.row] 等) 7 个状态并查看问题出在哪里以及您在哪里丢失了选定的图像引用

可能的问题

你没有使用 ...didSelectItemAt indexPath...performSegue,可能你有一个 UIButton,所以按钮正在阻止 cell 被选中。

关于ios - Swift - 从 UICollectionViewCell 获取 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58768604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com