swift - 在 Swift 中将处理程序传递给 UICollectionView 单元格

标签 swift events uicollectionview cell handler

我正在 Swift 中开发一个应用程序,为了好玩,我发现我需要将至少 2 个单独的事件处理程序(闭​​包?)传递到 UICollectionView 中的单元格。这导致构造函数变得拥挤,我想知道是否有 iOS 最佳实践来实现这一点。例如,我有以下单元格:

class Cell: UICollectionViewCell {
    var onPictureTap: (() -> ())? = nil
    var onButtonTap: (() -> ())? = nil

    init(onPictureTap: @escaping () -> (), onButtonTap: @escaping () -> (), ) {
        //set properties to args
    }

    @objc func didTouchInsidePicture() {
        if let onPictureTap = self.onPictureTap {
            onPictureTap()
        }
    }

    @objc func didTouchInsideReplyButton() {
        if let onButtonTap = self.onButtonTap {
            onButtonTap()
        }
    }
}

这效果很好,但我发现我必须添加其中的另一个,这次支持参数,并希望有人能够演示正确的 Swifty/iOS-y 方法来实现这一目标。

谢谢!

最佳答案

我发现大多数项目都会在实例化后设置这些。例如

let cell = Cell()
cell.onPictureTap = ...

效果很好并且没有副作用(我可以发现!)

关于swift - 在 Swift 中将处理程序传递给 UICollectionView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51314641/

相关文章:

arrays - 如何在函数中将 swift 数组作为 UnsafePointer<T> 参数传递

swift - UINavigationController 始终响应选择器 interactivePopGestureRecognizer?

windows - 处理 .net 核心中的窗口锁定/解锁事件

ios - UICollectionView indexPathsForVisibleItems 顺序

ios - UITableViewController 单元格中的索引超出范围 - swift

ios - 如何旋转视频?

javascript - 通过javascript在选择框中按下箭头键

angularjs - 如何从焦点/模糊更改父元素的类?

swift - 扩展 UICollectionViewDataSource 协议(protocol)以添加默认实现

ios - UIModalPresentationPopover 的箭头不指向 UICollectionViewCell