적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

notification / callback / delegate 사용법

hongssup_ 2022. 8. 17. 19:14
반응형

 

https://yagom.net/forums/topic/cell-%EC%95%88%EC%9D%98-button%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95%EB%93%A4/

 

이벤트 발생을 감지하는 방법

Cell 내 버튼을 처리하는 여러가지 방법들. 

 

Delgate 패턴

 

Callback 

Completion Handler로서 Callback Closure를 사용하는 방법. 

예시) 관심상품 추가 

보내는 곳

// MyCell
lazy var favoriteBtn: UIButton = {
    let button = UIButton()
    ... 
    button.addTarget(self, action: #selector(self.onFavorite), for: .touchUpInside)
    return button
}()

var callBack: ((_ status: Bool) -> Void)?

@objc private func onFavorite() {
    self.callBack?(self.favoriteBtn.isSelected)
}

callBack 받을 때

// ViewController
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myCell", for: indexPath) as? MyCell else {
        return UICollectionViewCell() 
    }
    ...
    cell.callBack = { favoriteStatus in 
        self.showFavoriteToast(status: favoriteStatus)
    }
    return cell
}

Notification

 

728x90
반응형