我正在用Swift开发一个应用程序,发现我需要将至少2个单独的事件处理程序(关闭?)传递给UICollectionView中的单元格。这正在导致拥挤的构造函数,我想知道是否存在实现此目标的iOS最佳实践。例如,我有一个follownig单元:

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


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

09-25 15:30