如何与自定义 UICollectionViewCell 单元格交互

Posted

技术标签:

【中文标题】如何与自定义 UICollectionViewCell 单元格交互【英文标题】:how to interact with custom UICollectionViewCell cell 【发布时间】:2019-02-09 15:59:57 【问题描述】:

我有一个 UICollectionViewController,它可以垂直滚动(就像一个表格视图)。我创建了一个自定义 UICollectionViewCell。在自定义单元格内部,有复选标记。当用户单击复选标记时,我需要某种事件来单击。

我尝试过的,是压倒一切的:

 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
        print("clicked")
    

但这仅在用户单击单元格时执行。但是,如上所述,单元格包含复选标记...我需要找出每个复选标记被单击的时间。

这可能吗?

【问题讨论】:

你能放更多你的细胞类的代码吗? 当然有可能:希望这会有所帮助:link: closures and delegates 【参考方案1】:

您可以将 IBAction 添加到 UICollectionViewCell 类并处理来自该 IBAction 的点击,如果您需要它来更改父视图控制器上的某些内容,您有几个选项,您可以使用委托或传递控制器到单元格。

在父视图控制器上:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CustomCollectionViewCell
    cell.controller = self 
    return cell

关于 UICollectionViewCell 类:

var controller: ParentViewController? 

@IBAction func checkmarkPressed(sender: UIButton) 

    print("checkmarkPressed")

   controller.someFunction()


【讨论】:

哇,太好了,谢谢。但是,在我的自定义 UICollectionViewCell 单元格中,我以编程方式创建了 4 个标签。当有人单击 CollectionView 内的单元格时,我需要更改文本。有没有我可以命名每个标签,以便我知道每个标签在 cellForItemAtIndexPath 内? 您可以为 CollectionViewCell 中的每个标签创建 IBOutlets,然后您可以从 cellForItemAt 访问每个标签,例如 cell.labelOne、cell.labelTwo 等。

以上是关于如何与自定义 UICollectionViewCell 单元格交互的主要内容,如果未能解决你的问题,请参考以下文章

如何将 QSGClipNode 与自定义几何图形一起使用?

如何使 didSelectRowAt IndexPath 与自定义委托一起使用

如何将 Qt 属性与自定义类一起使用?

如何将 DataAnnotations ErrorMessageResourceName 与自定义资源解决方案一起使用

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配