将处理程序传递给 Swift 中的 UICollectionView 单元格

Passing Handlers to UICollectionView Cells in Swift

我在 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 = ...

效果很好,没有不良影响(我可以发现!)