티스토리 뷰
728x90
반응형
push 와 pop 시 ViewLifeCycle
문제
- viewDidLoad 에서 realm 에서 데이터를 가져와서 뷰에 뿌려주는 형식인데 이 경우 push 하고 pop 해서 뷰로 돌아올 경우 업데이트가 되지 않았다.
원인
push 할 경우에 view 가 사라지지만 메모리에는 남아있다는 것을 놓쳤다. 즉, viewDidLoad 는 한번만 호출되는데 notificationToken 을 viewDidLoad 에서 설정해주었던 것이 문제였다.
viewWillDisappear
에서 notificationToken 을 invalidate() 하기 때문에 뷰가 사라질 때 저장한 notificationToken 이 해제가 되었다.그 후에 push 된 뷰에서 db 를 수정하고 pop 해서 메인 뷰를
viewWillAppear
해주기 때문에viewDidLoad
에서 설정해둔reloadData()
가 실행되지 않았고 db 가 업데이트가 안되는 현상이 보여졌던 것이다.push
- pop
해결
viewWillAppear
에서 notificationToken 을 설정해서 pop 되어 뷰가 화면에 보여질 때 reloadData()
가 실행되도록 하였다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
realm = try? Realm()
Lists = realm?.objects(ListModel.self)
notificationToken = Lists?.observe { change in
print("change: \(change)")
self.tableView.reloadData()
}
}
그렇다면 present 할때는?
- present 할때는 정상적으로 업데이트가 가능하다. 이때는 뒤의 뷰가 사라지지 않아서 deinit 역시 하지 않기 때문이다.
728x90
반응형
'iOS' 카테고리의 다른 글
iOS) Cell 꾹 눌러서 미리보기 만들기 (0) | 2021.07.21 |
---|---|
iOS) UINavigationBar 의 large title 색 설정 (0) | 2021.07.21 |
iOS) UITextField 에 입력시 키보드 위 toolbar 구현 (0) | 2021.07.21 |
iOS) UITalbeView editing mode 에서 multiple selection 구현 (0) | 2021.07.21 |
iOS) UITalbeViewCell SwipeAction (0) | 2021.07.21 |
댓글
TAG
- CloneCoding
- APNS
- Protocol
- Objective-C
- Notification
- projectsetting
- WWDC
- Firebase
- configurable widget
- watchOS
- UserDefaults
- Swift
- urlsession
- MOYA
- containerBackground
- Algorithm
- IOS
- RxCocoa
- YPImagePicker
- OpenSourceLibrary
- WWDC22
- 서버통신
- SwiftUI
- MVVM
- github
- rxswift
- Widget
- async/await
- 2022 KAKAO TECH INTERNSHIP
- WidgetKit
최근에 올라온 글
최근에 달린 댓글
글 보관함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
링크
- Total
- Today
- Yesterday