在didSelectItemAt中实现委托

时间:2019-03-24 00:47:12

标签: ios swift uicollectionview delegates

我正在使用委托在UICollectionViewCellUICollectionViewController之间建立连接。在这方面,我想说的是,如果用户单击UIView的其超类已更改,则我已经通过手势完成了操作。 唯一的问题是,我认为我必须将此委托实施到didSelectItemAt'的UIcollectionView协议中,我不确定该怎么做。

例如,首先我在cellForItemAt中做到了,这是一个错误,我可以轻松实现。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "listCell", for: indexPath) as? ListCell
    cell?.selectionDelegate = self // implement the delegate
}

但是我不知道如何在didSelectItemAt中做同样的事情,因为我认为我应该在这里而不是在cellForItemAt

中做同样的事情
 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

}

非常感谢您的提前帮助

1 个答案:

答案 0 :(得分:0)

假设您有原始选择代表:

protocol SelectionDelegate {
    func didSelect(_ cell: ListCell)
}

然后,您只需调用选择委托即可轻松实现collectionView的didSelect:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    guard let cell = collectionView.cellForItem(at: indexPath) as? ListCell else { return }
    didSelect(cell)
}