2014-10-20 13 views
8

Tôi đã triển khai UICollectionView chứa danh sách đối tượng UIImageView.Làm thế nào để nghe người dùng chạm cho UICollectionViewCell trong iOS?

Tôi muốn người dùng được đưa đến YouTube bằng URL cụ thể khi anh ấy chạm vào hình ảnh.

Nhưng tôi không biết làm thế nào để thêm người nghe cảm ứng cho mỗi 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 
    } 

My tế bào quang điện lớp có một biến thành viên chứa URL để youtube.

Đối với mỗi đối tượng tế bào quang điện, khi ép, tôi muốn ứng dụng của tôi để gửi người dùng đến trang web hoặc youtube.com APP (nếu được cài đặt)

Trả lời

28

Bạn nên thực hiện phương pháp UICollectionViewDelegate giao thức collectionView(_:didSelectItemAtIndexPath:). Khi bạn nhấn một trong các ô xem bộ sưu tập của bạn, phương thức này sẽ được gọi. Dưới đây là triển khai mẫu

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

Bằng cách này tôi không biết nơi bạn nhận được url. Vì vậy, tôi đã ứng biến một chút :)

+0

Nhân tiện, sự khác biệt giữa indexPath.item và indexPath.row – malhobayyeb

+2

Không có sự khác biệt. Nó là ngữ nghĩa. Khi bạn đối phó với 'UITableView' bạn nói" hàng "và khi bạn đối phó với' UICollectionView' của yo nói "mục" – mustafa

+0

Điều này có đi trong viewDidLoad() – tccpg288

Các vấn đề liên quan