(Swift)在外部视图中定义的UICollectionView中的didSelectItemAtIndexPath不起作用

时间:2016-02-20 15:45:03

标签: ios iphone swift

这是我的问题。我创建了一个继承自UIViewController,UICollectionViewDataSource和UICollectionViewDelegate的View Controller。所以,我有这个:

class myController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
...
}

然后,我创建了一个自定义视图,它有一个UICollectionView,如下所示:

class externalCollectionView: UIView {
    var myCollection: UICollectionView?

    override init(frame: CGRect){
        super.init(frame: frame)
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20)
        layout.itemSize = CGSize(width: 130, height: 130)
        layout.minimumLineSpacing = 10
        layout.minimumInteritemSpacing = 10

        myCollection = UICollectionView(frame: CGRectMake(0, 120, frame.size.width, frame.size.height - 120), collectionViewLayout: layout)
        myCollection!.registerNib(UINib(nibName: "customCellView", bundle: nil), forCellWithReuseIdentifier: "myItem")

        self.addSubview(myCollection!)
    }
}

因此,在我的视图控制器中,我在viewDidLoad方法中使用此代码设置委托方法和功能:

    customView = externalCollectionView(frame: self.view.frame)
    customView.myCollection!.dataSource = self
    customView.myCollection!.delegate = self
    customView.myCollection!.userInteractionEnabled = true
    customView.myCollection!.allowsMultipleSelection = true

这样,方法didSelectItemAtIndexPath永远不会被调用。是的,我有一个自定义单元格集合视图(在xib中),但我甚至没有图形元素(空),并且没有调用该方法。我已经实现了几个我在互联网上找到的解决方案,但没有任何效果。任何人都知道发生了什么?

2 个答案:

答案 0 :(得分:0)

您是否尝试从故事板或Xib将UICollectionViewCell连接到文件的所有者委托和dataSource?也许这可以帮助

答案 1 :(得分:0)

您只需将userInteractionEnabled设置为true即可获得自定义视图。如果父视图未启用用户交互,则其子视图无法识别任何触摸事件。