我如何为CollectionView单元具有onclick功能?

时间:2019-12-16 18:21:49

标签: ios swift xcode firebase uicollectionview

我要制作它,以便当我点击CollectionView Cell时,它会切换到另一个视图。我还想将用户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 个答案:

答案 0 :(得分:3)

您可以使用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)
}

如果您使用segues

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