일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- GroupBy
- URLSession
- 연속펄스부분수열의합
- SQL
- dfs
- algorithm
- duno
- 동적계획법
- SwiftUI Tutorials
- DynamicProgramming
- discardableResult
- 0이끝이아니길
- SOPT
- 이진탐색
- HAVIT
- 고득점kit
- SwiftUI
- IOS
- BFS
- concurrency
- 프로그래머스
- APPJAM
- binarySearch
- GCD
- Swift
- 기초문법
- Til
- SwiftUI 튜토리얼
- 다이나믹프로그래밍
- algoritm
- Today
- Total
suvera-dev 🥦
iOS) Modal dismiss한 후 CollectionView reload 하기 본문
안녕하세요 티스토리 너무 오랜만에 .. 들어와버렸네요... 현생을 구역꾸역 살다가..
오늘은 제가 개발을하면서 막혔던 부분에 대해서 공유를 드리고자 합니다 !
우선, 간단하게 설명 드리자면 제가 구현하던 기능은..
요로케 모달창에서 카테고리를 추가하면 모달창을 dismiss 했을 때 바로 reload가 되는 그런 기능이었슴미다 !
처음에는 아무고토 모르고 왜 계속 바로 reload가 안될까 ... 고민을 했는데요 !
📖 모달을 dismiss 한 후에는 viewWillAppear나 viewDidAppear가 실행되지 않기 때문에 CollectionView를 reload 하려면 NotificationCenter로 구현해야된다고 합니다!
1. 먼저 CollectionView를 갖고 있는 뷰컨에다가 addObserver를 해줍니다 ! ( 함수로 따로 뺀 뒤, viewDidLoad 에서 호출 해줬습니다. remove 작업도 잊지 마셔용 ! )
private func reloadCategoryNotification() {
NotificationCenter.default.addObserver(self, selector: #selector(didDismissAddCategoryNotification(_:)), name: .reloadCategory, object: nil)
}
📌 removeObserver를 해줘야하는 이유 ?
: NotificationCenter 는 싱글턴 인스턴스라서 여러 오브젝트에서 공유합니다! 그래서 옵저버를 등록한 오브젝트가 메모리에서 해제되면 NSNotificationCenter에서도 옵저버를 없앴다고 알려줘야 됩니다~~! 보통은 Counterpart되는곳에 맞춰서 해제 시켜줍니다 :)
요렇게요 !
viewWillAppear < - > viewWillDisappear
viewdidload() < - > deinit() : 1번씩만 호출되니까
저는 모든 viewcontroller가 상속받고 있는 baseViewcontroller에서
요렇게 등록된 observer들을 전체 제거 해주는 코드를 넣었습니다!
deinit {
NotificationCenter.default.removeObserver(self)
}
2. 모달을 dismiss 해주는 부분에서 post 해주기
self.dismiss(animated: true) {
NotificationCenter.default.post(name: .reloadCategory, object: nil)
}
3. observer에 연결된 함수 구현해주기 ! 저의 경우 모달창에서 서버에 post하는 과정이 수행되기 때문에 서버에서 다시 get을 해오는 함수를 넣어주었습니다!
@objc
private func didDismissAddCategoryNotification(_ notification: Notification) {
getCategory()
}
생각보다 간단하긴 하지만.. ! 몰랐던거라 함 정리하고 갑니다 ~
- 참고한 블로그 !
'iOS' 카테고리의 다른 글
iOS) Compositional Layout (2) | 2022.05.09 |
---|---|
iOS) WKWebView (0) | 2022.03.28 |
iOS ) URLSession 알아보기 (2) | 2022.02.28 |
iOS ) GCD 사용시 주의해야할 사항 (0) | 2022.02.06 |
iOS ) iOS 15 UIButton.ConfigurationUpdateHandler (0) | 2022.02.05 |