这是我的问题。我创建了一个继承自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中),但我甚至没有图形元素(空),并且没有调用该方法。我已经实现了几个我在互联网上找到的解决方案,但没有任何效果。任何人都知道发生了什么?
答案 0 :(得分:0)
您是否尝试从故事板或Xib将UICollectionViewCell连接到文件的所有者委托和dataSource?也许这可以帮助
答案 1 :(得分:0)
您只需将userInteractionEnabled
设置为true
即可获得自定义视图。如果父视图未启用用户交互,则其子视图无法识别任何触摸事件。