UITableView의 데이터 소스와 델리게이트 메서드는 테이블 뷰의 동작에 따라 호출됩니다. 각 메서드의 호출 시점은 다음과 같습니다:
numberOfSections(in:)
: 테이블 뷰의 섹션 수를 반환하는 메서드입니다. 테이블 뷰를 초기화할 때 한 번 호출되고, 이후에는 테이블 뷰의 섹션 수가 변경될 때마다 호출됩니다.그렇다고 해서 델리게이트와 데이터소스 객체를 지정해줄 때 호출 되는것은 아니다
tableView(_:numberOfRowsInSection:)
: 주어진 섹션에 대한 테이블 뷰의 행 수를 반환하는 메서드입니다. 테이블 뷰가 로드될 때 및 섹션의 행 수가 변경될 때마다 호출됩니다.
tableView(_:cellForRowAt:)
: 주어진 인덱스 패스에 대한 셀을 반환하는 메서드입니다. 테이블 뷰가 표시될 때, 스크롤될 때, 또는 행이 업데이트될 때마다 호출됩니다.
tableView(_:willDisplay:forRowAt:)
: 테이블 뷰가 셀을 표시하기 직전에 호출되는 메서드입니다. 셀이 표시되기 전에 추가적인 설정을 수행하고자 할 때 사용됩니다.
tableView(_:didSelectRowAt:)
: 테이블 뷰의 특정 행이 선택되었을 때 호출되는 메서드입니다. 사용자가 행을 탭할 때마다 호출됩니다.
tableView(_:commit:forRowAt:)
: 테이블 뷰의 행에서 편집 작업(삭제, 삽입 등)이 발생했을 때 호출되는 메서드입니다. 편집 작업이 발생할 때마다 호출됩니다.
이 외에도 다른 UITableViewDelegate 및 UITableViewDataSource 프로토콜의 메서드들이 있으며, 각 메서드는 해당하는 상황에서 호출되어 필요한 작업을 수행하게 됩니다.
https://ios-development.tistory.com/849
guard let entryDetailViewController = storyboard?.instantiateViewController(identifier: StoryBoardNameSpace.entryDetailViewController) ({
coder in EntryDetailViewController(expoEntry: expoEntry, coder: coder)
}) else { return }
navigationController?.pushViewController(entryDetailViewController, animated: true)
메타타입
프로토콜 반환타입으로 썻을때(타입으로써의 프로토콜)
제네릭을 호출할때 유의점