我正在用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 = ...
效果很好,并且没有不良影响(我可以发现!)