如何与自定义 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 单元格交互的主要内容,如果未能解决你的问题,请参考以下文章
如何使 didSelectRowAt IndexPath 与自定义委托一起使用
如何将 DataAnnotations ErrorMessageResourceName 与自定义资源解决方案一起使用