봉식이와 캔따개

[iOS] data load 시점에서 보는 viewWillAppear과 viewDidAppear의 차이 (feat. viewDidLoad) 본문

iOS/TIL

[iOS] data load 시점에서 보는 viewWillAppear과 viewDidAppear의 차이 (feat. viewDidLoad)

봉식이누나 2023. 7. 29. 13:39
반응형

 

 

 

 

 

⚒️  구현 하고자 한 것

 

1. 왼쪽 화면에서 원하는 기분 버튼을 누르면 오른쪽 화면에서 누적 클릭 횟수를 확인할 수 있다.

    → UserDefaults를 사용하여 구현

 

2. 리셋버튼을 눌러 누적 클릭 횟수 초기화

 

 

 

오른쪽 화면의 viewController코드에 UserDefaults 값을 가져오는 loadData() 라는 함수를 만들었고,

처음엔 자연스럽게 viewDidLoad 함수 안에서 loadData()를 호출하도록 작성했다.

 

실행 결과는..

이전에 눌렀던 값들은 잘 가져오지만, 왼쪽 화면에서 아무리 클릭해도 값이 적용되지 않았다.

 

 

 

✅ viewDidLoad는 한 번만 호출..

 

두 화면 모두 탭 바 컨트롤러로 연결된 네비게이션 컨트롤러의 rootView 이기 때문에 viewDidLoad는 한 번만 호출된다.

음... 분명 알고 있었는데 viewDidLoad = 초기화 이런 식으로 생각하다보니 실수하게된 것 같다.

 

viewDidLoad에는 디자인 관련된 UI 설정이라든지? 변하지 않는 초기 설정과 관련된 것들만 이 안에 작성해주면 될 것 같다.

 

 

 

 

✅ viewWillAppear과 viewDidAppear

 

이후에는 view가 나타날 때 loadData()를 호출해줘야겠다고 생각해서 

viewDidAppear 메서드 안에서 loadData()를 호출하도록 코드를 수정했다

viewWillAppear 메서드가 있다는걸 몰라서 그랬는데 알았으면 아마 첨부터 viewWillAppear 안에 넣었을 것 같긴함..

 

결과는 내가 원하는대로 나오긴 했다.

 

근데 viewWillAppear은 뷰가 나타나기 직전 호출, viewDidAppear은 뷰가 나타난 직후 호출되기 때문에

data를 불러오는 등의 작업은 viewWillAppear에서 처리해주는게 더 적절해보인다.

 

내가 구현한 앱의 경우, 불러올 데이터가 그렇게 많지 않아서 괜찮았겠지만,

데이터를 불러오는 시간이 걸리는 경우를 생각하면 사용자가 빈 화면을 보게될 가능성이 생긴 것이기 때문에..

 

데이터를 로드하는 작업은 viewDidAppear가 아니라 viewWillAppear에서 해야할 것 같다.

 

 

 

 

어떻게 보면 좀 당연하고 사소한 듯 하지만 오늘도 1cm만큼 성장한 느낌쓰.. 🐥

반응형

'iOS > TIL' 카테고리의 다른 글

[iOS] 어쩌다 마주친 동기/비동기  (0) 2023.08.13
[iOS] 랜덤 UIColor 만들기  (0) 2023.07.24
Comments