我在我的快速课程中使用UICollectionView
,它放在我的UIViewController
上。我将collectionView连接到我的代码中的插座,我设置了delegate
和datasource
,我在我的应用中看到了结果。除了我单击每个单元格时没有任何反应这一事实,一切都有效。
我的代码如下:
class UsersList: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var tview: UICollectionView!
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
tview.backgroundColor = UIColor.whiteColor() //this works
tview.delegate = self
tview.dataSource = self
}
func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.item)!")
//this does not appear in the console :(
}
我还能做些什么来在控制台中看到打印消息?
答案 0 :(得分:1)
在swift中,参数名称和函数名称一起标识一个函数。 UICollectionViewDelegate有函数
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
但不是
func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
答案 1 :(得分:1)
对我来说,我必须设置UICollectionView
的代表。例如,在viewDidLoad()
中:
collectionView.delegate = self
这是必要的,否则将不会调用委托方法!
答案 2 :(得分:0)
确保在故事板中启用了用户交互
答案 3 :(得分:0)
尝试从视图中删除所有UIGesture,然后进行测试以查看UICollectionView单元是否能够正常交互。
就我而言,我必须删除以下行:
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
self.view.addGestureRecognizer(tap)
由于某种原因,这妨碍了我单击单元格。
答案 4 :(得分:0)
我不得不在情节提要中将滚动方向从垂直方向更改为水平方向,
答案 5 :(得分:0)
我的问题是对于 collectionView 的父视图,isUserInteractionEnabled 是假的。我从其他地方获取了父视图的代码,这显然是正确的做法。但不是这里......叹气......