我有一个UICollectionView
,我要向每个UIGestureRecognizer
添加一个UICollectionViewCell
。
在点击时,我正在执行 segue ,并显示另一个UIViewController
。当我点击时,它会出现,选择器函数会被多次调用,这就是记录以下警告的原因:
警告:尝试在已经显示的VC上显示VC(空)
didSelectCell
/ didDeSelectCell
委托方法cellForItemAt
委托方法中添加手势我确实对引发多重调用的根本原因不知所措,并且希望得到任何帮助,因为我找不到与SO中的参考直接相似的东西。
不确定使用重复使用的单元格是否需要做任何事情?
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! collectionViewCell
tap = UITapGestureRecognizer(target: self, action: #selector(onTap))
tap.delegate = self
cell.addGestureRecognizer(tap)
return cell
}
@objc func onTap(_ sender: UITapGestureRecognizer) {
homeCollectionView.isScrollEnabled = true
self.performSegue(withIdentifier: "segueId", sender: sender)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let presentedVC = segue.destination as? viewController, let sender = sender as? UITapGestureRecognizer, let cell = sender.view as? collectionViewCell {
//Data passed
}
}