为什么我的UICollectionView单元格在我的swift ios应用程序中无法点击?

时间:2016-04-07 21:20:41

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewdelegate

我在我的快速课程中使用UICollectionView,它放在我的UIViewController上。我将collectionView连接到我的代码中的插座,我设置了delegatedatasource,我在我的应用中看到了结果。除了我单击每个单元格时没有任何反应这一事实,一切都有效。

我的代码如下:

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 :(
}

我还能做些什么来在控制台中看到打印消息?

6 个答案:

答案 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 是假的。我从其他地方获取了父视图的代码,这显然是正确的做法。但不是这里......叹气......