티스토리 뷰
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
									
							
								
								- IOS
 - 2022 KAKAO TECH INTERNSHIP
 - 서버통신
 - CloneCoding
 - YPImagePicker
 - MOYA
 - Widget
 - projectsetting
 - Swift
 - WWDC22
 - OpenSourceLibrary
 - APNS
 - async/await
 - WidgetKit
 - Objective-C
 - github
 - Notification
 - RxCocoa
 - urlsession
 - UserDefaults
 - rxswift
 - MVVM
 - Firebase
 - Algorithm
 - containerBackground
 - watchOS
 - configurable widget
 - SwiftUI
 - Protocol
 - WWDC
 
									최근에 올라온 글
									
							
								
								
									최근에 달린 댓글
									
							
								
								
									글 보관함
									
							
								
								| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
									링크
									
								
							
								
								- Total
 
- Today
 
- Yesterday