didSelect在UICollectionviewCell中不起作用以选择UICollectionViewController

时间:2017-07-11 11:36:58

标签: ios swift

我在didSelectItemAtIndexPath中写了UICollectionViewCell func来选择UICollectionViewController。我用两种方式编写代码,但它根本不起作用。另外,我没有在那里收到错误。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    if indexPath.item == 0 {

        let layout = UICollectionViewFlowLayout()
        let controller1 = DigitalSLRCon(collectionViewLayout: layout)
        let nav = UINavigationController()
        nav.pushViewController(controller1, animated: true)

// OR

        let layout = UICollectionViewFlowLayout()
        let controller1 = DigitalSLRCon(collectionViewLayout: layout)
        navigationController?.pushViewController(controller1, animated: true)

    }

2 个答案:

答案 0 :(得分:1)

didSelectItemAtIndexpathUICollectionViewDelegate的函数 - 你不是在单元格中实现它,而是在CollectionView的委托中实现它,所以可能是包含集合视图的视图控制器。

  1. 使保存集合视图的UIViewController符合UICollectionViewDelegate协议
  2. 将该视图控制器分配给集合视图的delegate属性
  3. 在视图控制器
  4. 中实现didSelectItemAtIndexpath功能

答案 1 :(得分:0)

请从UICollectionViewCell删除委托代表不是单元格,而是UICollectionView处理程序

如果您想更改单元格中的某些元素

你可以像这样覆盖单元格中的默认变量

override var isSelected: Bool {
   didSet {
      if isSelected {
         //do something
      } else {
         //not selected
      }
   }
}

override var isHighlighted: Bool {
   didSet {
      if isHighlighted {
         //do something
      } else {
         //not selected
      }
   }
}