[iOS] reloadData κ°μ λ° μ°Έκ³ μ¬ν
π 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λ λ³νκ° μλ€λ©΄ ν΄λΉ μ¬νλ€μ κ°μ λ‘ μμ λλ€.