将处理程序传递给 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 = ...
效果很好,没有不良影响(我可以发现!)
我在 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 = ...
效果很好,没有不良影响(我可以发现!)