我已经实现了一个包含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(如果已安装)
答案 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
}