如何为我的 CollectionView 单元格提供 onclick 功能?
Posted
技术标签:
【中文标题】如何为我的 CollectionView 单元格提供 onclick 功能?【英文标题】:How can I have onclick functionality for my CollectionView cells? 【发布时间】:2019-12-16 18:21:49 【问题描述】:我想这样当我点击 CollectionView 单元格时,它会转到另一个视图。我还想将用户 ID 传递给该视图,以便查询数据库。这是我迄今为止实现的:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionview.dequeueReusableCell(withReuseIdentifier: "userCell", for: indexPath) as! UserCell
print(user[indexPath.row].imagePath!)
cell.userImage.sd_setImage(with: URL(string: user[indexPath.row].imagePath!))
cell.nameLabel.text = user[indexPath.row].username
cell.userID = user[indexPath.row].userID
let destinationVC = ProfileViewController()
destinationVC.sentUserID = user[indexPath.row].userID!
// Let's assume that the segue name is called playerSegue
// This will perform the segue and pre-load the variable for you to use
//destinationVC.performSegue(withIdentifier: "toProfileFromSearch", sender: self)
cell.addButtonTapAction =
// implement your logic here, e.g. call preformSegue()
self.performSegue(withIdentifier: "toProfileFromSearch", sender: self)
//cell.userImage.downloadImage(from: self.user[indexPath.row].imagePath!)
//checkFollowing(indexPath: indexPath)
return cell
这是在每个单元格的单独创建中。当我点击搜索区域中的用户个人资料时,没有任何反应。
我遵循了其他堆栈溢出问题来做到这一点。任何人都可以为其他需要此功能的人制定完整的解决方案吗?
【问题讨论】:
【参考方案1】:你可以使用didSelectItemAt
函数,检查一下
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
let VC1 = self.storyboard!.instantiateViewController(withIdentifier: "IDYOURVIEW") as! ProfileViewController
VC1.sentUserID = user[indexPath.row].userID!
self.navigationController?.pushViewController(VC1, animated: true)
如果您使用的是转场
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
self.performSegue(withIdentifier: "toProfileFromSearch", sender: user[indexPath.row].userID!)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!)
if segue.identifier == "toProfileFromSearch"
let vc = segue.destination as? ProfileViewController
if let id = sender as! String
vc?.sentUserID = id
【讨论】:
我需要这两种实现吗?我正在尝试 didSelectItemAt 并且它没有注册我的点击。我在那里放了一个 print 语句,看看是否只是 segue 不起作用,但 print 语句从不打印。 不是,你需要选择一个,我建议你第二种方式,但首先在你的cellForRowAt函数中,从let destinationVC
这一行删除到cell.addButtonTapAction
以上是关于如何为我的 CollectionView 单元格提供 onclick 功能?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 UICollectionView 中的单元格设置可变单元格间距