๊ฐ์ฒด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ์ ์ธ๊ฐ์ง๊ฐ ์๋ค.
์ด์ค์์ ์ฐ๋ฆฌ๋ Delegate ํจํด์ ๋ํด ์ดํด๋ณธ๋ค.
delegate๋ผ๋ ๋จ์ด๋ ์์ํ๋ค๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค. ์ฆ, Delegate ํจํด์ด๋ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ ์ ์ผ์ ์์ํ๋ ๊ฒ์ด๋ค.
์ง๊ธ ํ๋ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์๋ค. ์ผ์ชฝ์ ๋ทฐ์ปจํธ๋กค๋ฌ์ด๊ณ , ์ค๋ฅธ์ชฝ์ ๋ทฐ์ปจํธ๋กค๋ฌ ์์ ์ ์ด๋ค. ์ ์ ์ปค๋ฒ๋ณ๊ฒฝ ๋ฒํผ์ ํด๋ฆญํ์์ ๋, ๋ทฐ์ปจํธ๋กค๋ฌ์์ ์๋ก์ด ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋์ฐ๋ ค๊ณ ํ๋ค.
์ ์ ์ปค๋ฒ๋ณ๊ฒฝ ๋ฒํผ์ ํด๋ฆญํ์์ ๋ ์ฒ๋ฆฌํ ์ฝ๋๋ค์ ๋ทฐ์ปจํธ๋กค๋ฌ์ ์์ํ๋ ค๊ณ ํ๋ค.
์ ์์ ํด์ผ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
1๏ธโฃ. ํ๋กํ ์ฝ ๋ง๋ค๊ณ ์์ ๋ฉ์๋(changeCoverImage) ์ถ๊ฐํ๋ค.
2๏ธโฃ. delegate๋ฅผ ์ฝํ ์ฐธ์กฐ๋ก ์ฐธ์กฐํ๋ค.
3๏ธโฃ. ์ปค๋ฒ ๋ณ๊ฒฝ ๋ฒํผ(imageChangeButton)์ด ํด๋ฆญ๋์์ ์ delegate์ ๋ฉ์๋๋ฅผ ์คํํ๋ค.
1๏ธโฃprotocol HomeWritingImageCellDelegate: AnyObject {
func changeCoverImage()
}
final class HomeWritingImageCell: UICollectionViewCell {
2๏ธโฃweak var delegate: HomeWritingImageCellDelegate?
override func awakeFromNib() {
super.awakeFromNib()
configureButton()
}
}
private extension HomeWritingImageCell {
func configureButton() {
3๏ธโฃimageChangeButton.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
@objc func buttonTapped() {
3๏ธโฃdelegate?.changeCoverImage()
}
}
}
๋ทฐ์ปจํธ๋กค๋ฌ์์ ํด์ผ ํ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค.
1๏ธโฃ. cell์ delegate๋ฅผ ์๊ธฐ ์์ (๋ทฐ์ปจํธ๋กค๋ฌ)์ผ๋ก ์ค์ ํ๋ค.
2๏ธโฃ. ํ๋กํ ์ฝ์ ์ค์ํ๋ค.
final class HomeWritingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
1๏ธโฃcell.delegate = self
}
2๏ธโฃextension HomeWritingViewController: HomeWritingImageCellDelegate {
func changeCoverImage() {
// ์ปค๋ฒ ๋ณ๊ฒฝ ๋ฒํผ ํด๋ฆญ์ ์คํํ ์ฝ๋ ์์ฑ
}
}