Что вы можете сделать на самом деле, есть две распространенные практики, позволяющие контролировать ViewCels, так как это представления, которые вы можете просто создавать, и расширения, чтобы сократить рабочее время. Например;
//This enum can be extended due to demand
enum GestureRecognizerType {
case Tap
case Pinch
case Rotate
}
extension UIView {
func addRecognizer(_ gType:GestureRecognizerType, handleGesture:Selector, _ controller:UIViewController){
var recognizer:UIGestureRecognizer!
switch gType {
case .Pinch:
recognizer = UIPinchGestureRecognizer(target: controller, action: handleGesture)
case .Rotate:
recognizer = UIRotationGestureRecognizer(target: controller, action: handleGesture)
case .Tap:
recognizer = UITapGestureRecognizer(target: controller, action: handleGesture)
}
self.addGestureRecognizer(recognizer)
}
Тогда звоните куда хотите. Использование может быть таким:
override func viewDidLoad(){
super.viewDidLoad
let view = UIView()
view.addRecognizer(.Tap, handleGesture: #selector(handleTap(_:)), self)
}
@objc func handleTap(_ recognizer:UITapGestureRecognizer){
//Handle when the view tapped
}
Другая практика может быть обработать все внутри вашего пользовательского класса ячейки и дать им распознаватели, когда они установлены с помощью didSet.