728x90
https://i-go-ya.tistory.com/71
Swift Delegate 패턴 예제로 알아보기
240430Delegate 패턴은 객체 간의 통신과 이벤트 처리를 위한 디자인 패턴 중 하나입니다. 주로 객체 간의 느슨한 결합(Loose coupling)을 유지하면서 하나의 객체가 다른 객체의 동작을 대신 처리할 수
i-go-ya.tistory.com
제가 작성해 놓은 글이랑 아주 똑같은 상황이라 그대로 적용 했습니다
프로토콜 생성
protocol DetailViewDelegate {
func addBookalert(message: String)
}
파라미터에 담은 책 이름을 받을거예요
담기 버튼 누를시 델리게이트 사용하여 메서드 호출
delegate?.addBookalert(message: addBook.title ?? "")
담기 버튼을 누를 때 실행 되는 메서드에 위 코드를 추가해 줬어요
@objc func saveAddBook() {
print("coreData 저장")
guard let context = self.persistentContainer?.viewContext else { return }
guard let selectBook = self.selectBook else { return }
let addBook = Book(context: context)
addBook.title = selectBook.title
addBook.salePrice = Int32(selectBook.salePrice)
addBook.thumbnail = selectBook.thumbnail
try? context.save()
self.dismiss(animated: true, completion: nil) // 이전 화면으로 이동
delegate?.addBookalert(message: addBook.title ?? "")
}
얼럿 메서드 구현
func addBookalert(message: String) {
let alertVC = UIAlertController(title: "책 담기 완료!", message: " \(message)이(가) 라이브러리에 담겼습니다.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "확인", style: .default, handler: nil)
alertVC.addAction(okAction)
present(alertVC, animated: true, completion: nil)
}
창이 닫히면서 검색페이지에서 얼럿이 띄워집니다
검색뷰컨트롤러에 프로토콜을 채택하고 메서드를 구현해줍니다
728x90
'iOS Swift > Study' 카테고리의 다른 글
[Swift] 알람앱 - 타이머(1) - 타이머 UI (0) | 2024.05.13 |
---|---|
[Swift] 책 검색 App (10) - 무한 스크롤 (0) | 2024.05.11 |
[Swift] 책 검색 App (8) - 최근 본 책 플로팅 버튼 (UIImageView 원형 만들기) (0) | 2024.05.08 |
[Swift] 책 검색 App (7) - 페이지를 모달로 띄울 때 주의사항 (0) | 2024.05.08 |
[Swift] 책검색 App (6) - 담은 책 삭제 (CollectionView Cell 삭제) (0) | 2024.05.07 |
댓글