[iOS] IndexPath

황석범·2025년 1월 2일
0

내일배움캠프_iOS_5기

목록 보기
55/76

collectionView의 cellForItemAt indexPath는 왜 [0, 0] 같은 배열 형태인가

UICollectionView에서 사용하는 indexPath는 섹션(section)행(row)을 나타내는 정보를 포함하는 구조체(IndexPath)입니다. 이를 [section, row] 형식의 배열처럼 사용하는 것은 Swift에서 IndexPath가 배열처럼 동작하도록 설계되어 있기 때문입니다.

1. IndexPath

  • IndexPath는 테이블 뷰 또는 컬렉션 뷰의 셀을 식별하기 위한 정보를 포함합니다.

주요 속성

  • section: 컬렉션 뷰에서 섹션 번호.
  • item 또는 row: 해당 섹션 내의 셀 번호.

  • IndexPath(section: 0, item: 0)은 첫 번째 섹션의 첫 번째 셀을 가리킵니다.
  • IndexPath(section: 1, item: 2)은 두 번째 섹션의 세 번째 셀을 가리킵니다.

2. 왜 [0, 0]처럼 보이나?

  • IndexPath는 Foundation 프레임워크의 타입이며, 내부적으로 배열의 형태로 섹션과 아이템 정보를 저장합니다. 따라서 IndexPath를 배열처럼 접근할 수 있습니다.
let indexPath = IndexPath(row: 0, section: 1)
print(indexPath[0]) // 1 (section)
print(indexPath[1]) // 0 (row)

이 동작이 가능한 이유는 IndexPath가 배열 요소처럼 인덱스를 기반으로 값을 반환하도록 설계되어 있기 때문입니다.


3. 왜 섹션과 행을 분리하는가?

  • 컬렉션 뷰나 테이블 뷰는 다중 섹션을 지원합니다. 섹션과 행을 분리하는 것은 데이터를 더 잘 구조화하고 관리하기 위해 사용됩니다.

  • 한 화면에 여러 그룹(섹션)이 있고, 각 그룹 안에 여러 아이템(셀)이 있을 때:
    • 섹션: 상위 그룹을 구분.
    • 행(아이템): 해당 그룹의 하위 데이터를 구분.

4. Swift에서 배열처럼 보이는 이유

  • IndexPath는 Collection 프로토콜을 준수하여 배열처럼 동작합니다.
  • 내부적으로는 [section, item] 형태의 배열로 데이터를 저장하며, 배열 인덱스를 통해 section 또는 item 값에 접근할 수 있습니다.
profile
iOS 공부중...

0개의 댓글

관련 채용 정보