티스토리 뷰

반응형

 

 

 


reloadRows(at:with:)

reloadRows(at:with:) 메서드는 UITableView의 특정 행을 애니메이션 효과를 사용해서 업데이트 할 때 사용합니다.

특정 행을 부분적으로 업데이트할 때 사용하는 reloadRows(at:with:)와 별개로, 현재 화면 상 보이는 테이블뷰 전체를 업데이트 하는 메서드로는 reloadData() 메서드가 존재합니다.

 

 

 

 


Declaration
선언 방식


위의 코드는 reloadRows(at:with:) 메서드의 선언형태입니다. 
reloadRows(at:with:)은 UITableView의 인스턴스 메서드로, 테이블뷰 인스턴스에서 접근해서 사용합니다.

인자값으로는 indexPaths, animation이 있는데요. 인자값들에 대해서 알아보겠습니다. 

 

 


Parameters
reloadRows 인자 값

1) indexPath는 섹션/행 의 위치 정보를 담는 IndexPath 구조체의 배열을 받습니다.
배열을 받는 다는 것은 단일 행 뿐만 아니라, 여러개의 특정 행을 업데이트 할 수도 있음을 알 수 있습니다. 

2) animation 인자는 열거형 타입(UITableView.RowAnimation)으로 애니메이션 타입을 받습니다. 즉, 업데이트 될 행의 업데이트 간 애니메이션 타입을 지정합니다.
예를들면 타입 지정 방식에 따라 삽입/삭제 등이 일어날 시, 좌측/우측 등으로 이동하면서 사라지거나 추가되도록 설정할 수 있습니다.

예를들면 .right(UITableView.RowAnimation.right) 타입으로 애니메이션 인자를 설정할 경우, 지정한 행에 변화가 있을 시, 우측으로 슬라이드 되면서 업데이트 됩니다.

 

 

 


reloadRows 동작방식

reloadRows(at:with:)메서드를 사용해서 특정 행을 리로드(reload) 하는 것은 테이블 뷰에게 해당 행 위치의 셀들에 대해한 데이터소스(dataSource)를 새롭게 업데이트 하라고 요청하는 것이 됩니다.
그러므로, 업데이트 이후의 이벤트, 동작을 세부적으로 처리하고자 한다면, UITableViewDataSource 프로토콜을 채택해서 관련 메서드를 함께 처리할 수 있겠습니다. 

테이블뷰는 해당 작업이 일어날 때, 해당 행들에 대해 기존의 데이터에서 새로운 데이터로 갱신되는 과정에서 animation 인자값 설정에 따른 애니메이션 효과를 진행하게 됩니다.

애니메이션 효과가 있다면 사용자들에게 해당 테이블뷰의 일부 데이터가 변화했음을 알려주는 좋은 방법이 되겠죠? 그렇기에, reloadRows(at:with:) 메서드는 사용자가 특정 행의 값이 변화했음을 알려주고자 할 때 사용될 수 있습니다. 

 

 


reloadRows 사용 간 주의사항

만약 해당 메서드, reloadRows(at:with:)가 beginUpdates(), endUpdates() 메서드에 의해 정의 되는 애니메이션 블럭 내에서 호출된다면, 해당 메서드는 deleteRows(at:with:)과 유사하게 작동하게 됩니다.

이때 해당 메서드를 사용한 UITableView는 업데이트 하기 이전의 상태로 지정되게 됩니다. 애니메이션 블럭 내에서 이러한 동작은 삽입 / 삭제 / 리로드 동작의 순서와 상관없이 작동하게 됩니다.

reloadRows 메서드 뿐만 아니라, 테이블뷰의 행을 삭제, 삽입하는 과정을 할때 reloadData와 같은 업데이트 메서드를 애니메이션 블록에서 사용할 경우, 의도치 않은 결과를 얻을 수 있습니다. 이 부분은 주의해야겠습니다.

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함