๐ reloadData() ๊ฐ์ ๋ฐ ์ฐธ๊ณ ์ฌํญ
๐ reloadData()
reloadData()๋ ํ ์ด๋ธ๋ทฐ์ ์ธ์คํด์ค ๋ฉ์๋์ด๋ค.
ํ ์ด๋ธ๋ทฐ ์ธ์คํด์ค์์ ์ ๊ทผํด์ ์ฌ์ฉํ ์ ์๋ค.
reloadData()๋ ํ ์ด๋ธ ๋ทฐ์ ํ์ฌ ๋ณด์ด๋ ์ ์ฒด์ด(row), ์น์ (section)์ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ค.
reloadData()๋ ํน์ ์ด, ์น์ ์ ๋ถ๋ถ์ ์ ๋ฐ์ดํธ๊ฐ ์๋, ํ ์ด๋ธ ๋ทฐ์ ์ ์ฒด ์์ญ์ ์ ๋ฐ์ดํธ ํ ๋ ํจ๊ณผ์ ์ด๋ค.
๐ Declaration ์ ์ธ ๋ฐฉ์
func reloadData()
reloadData()๋ ํ ์ด๋ธ๋ทฐ์ ์ธ์คํด์ค ๋ฉ์๋๋ก, ์์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค.
ํด๋น ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ ํ์ ์ UICollectionView, UITableView ๋ฑ์ด ์๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ TableView๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด๋๋ก ํ๊ฒ ๋ค.
๐ reloadData() ์ฌ์ฉ๋ฐฉ๋ฒ
์น์ ์ HeaderView / FooterView, Cell, Index ๋ฐฐ์ด ๋ฑ์ ํฌํจํ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ reload ํ ์ฌ๊ตฌ์ฑ ํ๋ ค ํ ๋ ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ ์ ์๋ค.
์์ ๋งํ๋ฏ์ด, reloadData()๋ ์ ๋ฐ์ดํธ ๊ฐ ํจ์จ์ ์ธ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
์ด ๋ ํ ์ด๋ธ๋ทฐ์ ์ ์ฒด ์์ญ์ ์ ๋ฐ์ดํธ ํ๋ ๊ฒ์ด ์๋, ํ์ฌ ๋ณด์ด๋ ์ด ๋ง์ ์ ๋ฐ์ดํธ ํด์ค๋ค. ๋ํ reload ๋ ๋์ ๊ฒฐ๊ณผ์ ๋ํด ํ ์ด๋ธ์ ์๋์ ์ผ๋ก offset์ ์กฐ์ ํ๋ค.
๋ํ tableView๊ฐ reloadData()๋ฅผ ํธ์ถํ ํ
-> tableView๊ฐ ๊ฐ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒฝํ ์ ๋ฐ์ดํธ ํ๋ค๋ฉด,
-> ์ดํ ํด๋น tableView์ delegate(UITableViewDelegate), dataSource(UITableViewDataSource) ๊ด๋ จ ๋ฉ์๋๋ ์ํฉ๊ณผ ์กฐ๊ฑด์ ๋ง๊ฒ ํธ์ถ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก, reloadData() ํธ์ถ๊ณผ ์ฐ๊ณํ ์ธ๋ถ ๋์, ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ ๋ ์ด์ ์ ์ผ๋ํ๊ณ ๋ธ๋ฆฌ๊ฒ์ดํธ, ๋ฐ์ดํฐ ์์ค ๋ฉ์๋๋ฅผ ํจ๊ป ํ์ฉํ๋๊ฒ์ด ์ข๋ค.
๐ reloadData() ์ฌ์ฉ ๊ฐ ์ฃผ์์ฌํญ
1. tableView์ ํ์ ์ ๊ฑฐ ๋ฐ ์ฝ์ ํ๋ ์์ ์ ํ ๋, reloadData() ๋ฉ์๋๋ฅผ ํธ์ถํด์๋ ์๋๋ค. ํนํ beginUpdates(), endUpdates()์ ๊ฐ์ ๋ฉ์๋์ ํธ์ถ์ด ์์ ๋ ์ ๋๋ฉ์ด์ ๋ธ๋ก ๋ด์์ ์ฌ์ฉํด์ ์๋๋ค.
2. tableView์ ๋ณด์ด๋ ์์ญ ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธ/์ฝ์ /์ญ์ ํ๊ณ ์ ํ ๋๋ indexPath ๋ฐฐ์ด์ ์ฌ์ฉํด์ reloadRows(at:with:)๋ก ์ ๋ฐ์ดํธํ๊ฑฐ๋, perfromBatchUpdates(_:compeltion)์ ์ฌ์ฉํ๋ ๋ฑ, reloadData() ๋ฉ์๋ ๋์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
3. ๋ํ reloadData() ๋ฉ์๋๋ UI๋ฅผ ๋ณํ์ํค๋ ๋ฉ์๋๋ก ๋ฐ๋์ ๋ฉ์ธ์ค๋ ๋์์ ๋์ํด์ผ ํ๋ค.
๋ง์ฝ ํด๋ก์ ธ ๋ฑ์์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ก ๋์์ด ๋ ๋๋ DispatchQueue๋ OperationQueue ๋ฑ์ ํ์ฉํด์ ๋ฉ์ธ ์ค๋ ๋(main thread)์์ ๋์ํ๋๋ก ํด์ฃผ์ด์ผ ํ๋ค.
๐ก ์ค์์ฌํญ
tableView์ ํ๋กํผํฐ ์ค, hasUncommittedUpdates ๊ฐ์ด true๋ผ๋ฉด, reloadData()๋ฅผ ํธ์ถํด์๋ ์๋๋ค.
๋ง์ฝ ํด๋น ์์ ์ ํ๊ฒ ๋๋ฉด tableView ๋ด์์ reloadData()๊ฐ ์คํ๋๊ธฐ ์ ์ uncommitted๋ ๋ณํ๊ฐ ์๋ค๋ฉด ํด๋น ์ฌํญ๋ค์ ๊ฐ์ ๋ก ์ญ์ ๋๋ค.
'๐ iOS > UIKit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] AutoLayout : Dynamic Text ( ๋์ ํ ์คํธ ) (0) | 2023.03.30 |
---|---|
[iOS] AutoLayout : StackView ํ์ฉ (0) | 2023.03.30 |
[iOS] ํญ๋ฐ - UITabBarController (0) | 2023.03.25 |
[iOS] UI Switch (0) | 2023.03.25 |
[iOS] Modal dismiss ์ดํ reloadData() ํ๊ธฐ (0) | 2023.03.21 |