UIViewController 객체의 View 내부에 UITableView 객체를 Embed 하고
Attributes inspector 창을 통해 UITableView의 content를 static cell로 설정한 다음, 실행시켰는데
"Static table views are only valid when embedded in UITableViewController instances" 라는 오류가 발생하며 빌드에 실패했다.
원인을 찾고자 공식문서를 찾아보니... 아래와 같이 중요하다고 박스표시까지 되어있다.. UITableViewController
중요 ⚠️
정적 데이터를 가진 테이블 뷰는 해당 데이터를 관리하기 위해 UITableViewController 객체가 필요합니다.
정적 테이블을 사용하면 스토리보드 파일에서 테이블의 모든 데이터를 미리 지정하고, 데이터 소스 객체를 구현하지 않는다.
즉 데이터 소스를 통해 데이터를 관리하는 것이 아닌 런타임에 UIKit이 스토리보드에서 해당 데이터를 로드하여 관리한다.
런타임에 정적테이블의 데이터를 변경할 수 없으므로, 테이블 뷰의 내용을 업데이트할 가능성이 있다면 정적 데이터를 사용하면 안된다.
프로그래머는 정적 데이터가 포함된 테이블 뷰를 가진 UITableViewController에 데이터 소스 객체를 할당해서는 안된다. !!
정적 테이블 뷰는 섹션과 셀이 스토리보드에서 미리 정의되고 고정되어 있으며, 런타임에 변경되지 않는다. 이러한 정적 테이블 뷰는 UITableViewController와 함께 사용될 때 UIKit에 의해 자동으로 관리되고, 스토리보드에서 직접 셀을 구성할 수 있도록 해준다.
반면, 일반 UIViewController 내에서 UITableView 를 사용할 경우, 동적 테이블 뷰를 구현해야한다. 여기서는 프로그래밍 방식으로 데이터 소스를 관리하고, 셀을 동적으로 생성하며, 런타임에 데이터에 따라 테이블 뷰의 내용을 변경할 수 있다.
👉 요약하면, 정적 테이블 뷰는 UITableViewController 에서만 사용됨.!, 일반 UIViewController에서는 동적 테이블 뷰를 구현해야함.!!
참고:
++ 추가: UIViewController 내부에서 UITableViewController를 컨테이너로 감싸서 사용하는 방법도 있긴한데 결국 Static Table View 는 UITableViewController를 써야만 한다는 말씀
https://sweetdev.tistory.com/98
'iOS와 그 외 > UIKit' 카테고리의 다른 글
[UIKit] UIScreen 사용을 지양해야하는 이유 (feat. Scene 관점에서) (0) | 2024.08.25 |
---|---|
[iOS] 피커뷰 - UIPickerView, UIDatePicker (0) | 2024.01.17 |
[iOS] UIViewController - 1. 뷰 컨트롤러 만들기 (0) | 2023.12.30 |