UICollectionViewCell didDeselectItemAtIndexPath未调用

时间:2015-10-13 23:50:11

标签: ios xcode swift uicollectionview

我试图制作一个集合视图,一切正常,除非我尝试选择一个单元格。

我的方法didDeselectItemAtIndexPath未被调用。

在主要故事板中,我有一个嵌入导航视图控制器的collectionviewcell控制器。 collectionviewC调用另一个控制器打印其中两个之间的细节,有一个名为segueDetailFeature的segue 我有另一个项目,我确实喜欢tableviewcontroller并且它有效。

图像显示良好,在numebrofitemsinsection中打印返回好的值。

这是我的控制器的代码:



class ViewController: UICollectionViewController {


    var listImageUrl = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()

        // code to populate the listImageUrl

        self.collectionView?.delegate = self
        self.collectionView?.dataSource = self
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        print("nombre d'image : \(listImageUrl.count)")
        return listImageUrl.count
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell

        let imageView = cell.viewWithTag(1) as! UIImageView
        let urlString: NSString = listImageUrl[indexPath.row] as NSString
        let imgURL: NSURL = NSURL(string: urlString as String)!

        //Télécharger une représentation NSData de l'image à cette URL
        let imgData: NSData = NSData(contentsOfURL: imgURL)!
        imageView.image = UIImage(data: imgData)

        //imageView.image = UIImage(named: listImageUrl[indexPath.row])

        return cell
    }

    override func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
        print("selected item at index")
        let urlImage = listImageUrl[indexPath.row]
        imageUri = urlImage
        performSegueWithIdentifier("segueDetailFeature", sender: collectionView)
    }


}

我无法找到为什么我的代码无效,为什么我的didDeselectItemAtIndexPath没有被调用。然而,当我运行它时,应用程序使用segue并加载细节控制器,但是它失败了,因为一个变量还没有在方法中实例化选择。

提前致谢

1 个答案:

答案 0 :(得分:-1)

如果您查看此链接:UICollectionView - didDeselectItemAtIndexPath not called if cell is selected您可以看到他收到了同样的错误。他的代码在Objective-C中,但希望你可以将其改为swift。他解释说问题是UICollectionView对单元格一无所知,但正在选择单元格。