如何在iOS中收听UICollectionViewCell的用户触摸?

时间:2014-10-20 06:31:44

标签: ios swift uicollectionview uicollectionviewcell

我已经实现了一个包含UIImageView对象列表的UICollectionView

我希望用户在触摸图片时使用特定的网址访问YouTube。

但我不知道如何为每个 UICollectionViewCell 添加触控侦听器:

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    var cell: PhotoCell = collectionView.dequeueReusableCellWithReuseIdentifier("PhotoCell", forIndexPath: indexPath) as PhotoCell
    cell.loadImage(thumbnailFileURLs[indexPath.row], originalImagePath: originalFileURLs[indexPath.row])

    return cell
    }

我的PhotoCell类有一个成员变量,用于保存youtube的URL。

对于每个PhotoCell对象,按下时,我希望我的应用程序将用户发送到youtube.com网站或APP(如果已安装)

2 个答案:

答案 0 :(得分:34)

您应该实施UICollectionViewDelegate协议方法collectionView(_:didSelectItemAtIndexPath:)。当您按下某个集合视图单元格时,将调用此方法。以下是示例实现

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    let url = thumbnailFileURLS[indexPath.item]
    if UIApplication.sharedApplication().canOpenURL(url) {
        UIApplication.sharedApplication().openURL(url)
    }
}

顺便说一句,我不知道你在哪里得到网址。所以我即兴创作了一段时间:)。

答案 1 :(得分:1)

快捷键5

didSelectItemAtIndexPath已在Swift 5中重命名为didSelectItemAt

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
         //Do your logic here

    }