为什么我的 UICollectionView 单元格在我的 swift ios 应用程序中不可点击?
Why is my UICollectionView cell not clickable in my swift ios app?
我在 swift class 中使用 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 :(
}
我还能做些什么来在控制台中看到打印消息吗?
确保在故事板中启用了用户交互
在swift中,参数名和函数名共同标识一个函数。
UICollectionViewDelegate 有功能
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
但不是
func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
尝试从视图中删除所有 UIGesture,然后测试 UICollectionView Cells 是否能够正常交互。
就我而言,我必须删除以下行:
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
self.view.addGestureRecognizer(tap)
出于某种原因,这妨碍了我点击单元格。
我不得不将情节提要中的滚动方向从垂直更改为水平,这对我很有效。
对我来说,我必须设置 UICollectionView
的委托。例如,在 viewDidLoad()
:
collectionView.delegate = self
这是必要的,否则将不会调用委托方法!
我的问题是 isUserInteractionEnabled 对于 collectionView 的父视图是错误的。我从其他地方获取了父视图的代码,显然这是正确的做法。但不是在这里...叹气...
我在 swift class 中使用 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 :(
}
我还能做些什么来在控制台中看到打印消息吗?
确保在故事板中启用了用户交互
在swift中,参数名和函数名共同标识一个函数。 UICollectionViewDelegate 有功能
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
但不是
func collectionView(tview: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
尝试从视图中删除所有 UIGesture,然后测试 UICollectionView Cells 是否能够正常交互。
就我而言,我必须删除以下行:
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
self.view.addGestureRecognizer(tap)
出于某种原因,这妨碍了我点击单元格。
我不得不将情节提要中的滚动方向从垂直更改为水平,这对我很有效。
对我来说,我必须设置 UICollectionView
的委托。例如,在 viewDidLoad()
:
collectionView.delegate = self
这是必要的,否则将不会调用委托方法!
我的问题是 isUserInteractionEnabled 对于 collectionView 的父视图是错误的。我从其他地方获取了父视图的代码,显然这是正确的做法。但不是在这里...叹气...