이슈: UIImageView를 클릭하면 어떤 함수가 전달되도록 하기 위해 extension UIImageView {} 안에 해당 로직을 구현하려고 했다. 이 과정에서 GestureRecognizer를 등록하고 objc 함수를 전달해야 했는데, 일반적으로 함수를 넘기는 방식으로는 objc 함수를 넘길 방법이 없어 다른 방법을 찾아냈다.
해결:
결론부터 말하면 함수 자체를 넘기는 게 아니라 selector 자체를 넘김으로써 그것을 가능하게 만들었다.
예를 들어 다음 코드처럼:
// ViewController
...
cell.imageView.addTouchUpEvent(self, #selector(touchUpImageView))
...
}
@objc func touchUpImageView() {
print("in")
}
// UIImageView+Extensions.swift
extension UIImageView {
func addTouchUpEvent(_ targetVC: UIViewController, _ willBeExecuted: Selector) {
let tapGestureRecognizer = UITapGestureRecognizer(target: targetVC, action: willBeExecuted)
self.isUserInteractionEnabled = true
self.addGestureRecognizer(tapGestureRecognizer)
}
}
'iOS::스위프트(swift)' 카테고리의 다른 글
에러(UICollectionView): the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values. (0) | 2021.10.23 |
---|---|
[iOS][Swift]SQLite CRUD 처리하기 ! (0) | 2021.10.18 |
[iOS][Swift] 하나의 뷰에서 세 가지 뷰 컨트롤러 스위치하기 (1) | 2021.10.11 |
[iOS][Swift] 웹뷰-네이티브 통신 (0) | 2021.10.05 |
프로그래머스 - 순위검색 Swift (0) | 2021.09.09 |
최근댓글