gpt4 book ai didi

ios - 从 UICollectionViewCell 传播自定义事件

转载 作者:搜寻专家 更新时间:2023-10-31 08:30:09 26 4
gpt4 key购买 nike

我有一个自定义的 UICollectionViewCell,里面有一个按钮。当我点击按钮时,该子类中会触发一个事件。然后我想在 UICollectionView 本身上触发一个事件,我可以在我的 View Controller 中处理它。

伪代码:

class MyCell : UICollectionViewCell {
@IBAction func myButton_touchUpInside(_ sender: UIButton) {
// Do stuff, then propagate an event to the UICollectionView
Event.fire("cellUpdated")
}
}

class MyViewController : UIViewController {
@IBAction func collectionView_cellUpdated(_ sender: UICollectionView) {
// Update stuff in the view controller
// to reflect changes made in the collection view
}
}

理想情况下,我定义的事件将出现在 Interface Builder 中的默认操作 socket 旁边,然后允许我将它拖到我的 View Controller 代码中以创建上面的 collectionView_cellUpdated 函数,类似于 @IBInspectable 用于公开自定义属性。

有没有办法在原生 Swift 3 中实现这样的模式?或者,如果没有,是否有任何库可以实现?

最佳答案

我不完全理解你的问题,但据我所知,你可以简单地使用 closureUIButton tap 事件传递回 UIViewController

示例:

<强>1。自定义 UICollectionViewCell

class MyCell: UICollectionViewCell
{
var tapHandler: (()->())?

@IBAction func myButton_touchUpInside(_ sender: UIButton)
{
tapHandler?()
}
}

<强>2。 MyViewController

class MyViewController: UIViewController, UICollectionViewDataSource
{
//YOUR CODE..

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCell
cell.tapHandler = {
//Here you can do your custom handling
}
return cell
}
}

如果您遇到任何问题,请告诉我。

关于ios - 从 UICollectionViewCell 传播自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com