2014-02-19 2 views
1

간단한 질문입니다. UITableViewController를 하위 클래스로 만들면 UITableView가 자동으로 위임/데이터 소스를 내 클래스에 설정한다는 것을 알게되었습니다. 코드 정확성을 위해 클래스에 테이블 뷰 대리자/데이터 소스를 수동으로 설정해야합니까, 그렇지 않으면 예상되는 동작입니까?UITableView 대리인/데이터 원본 기본값

감사합니다.

답변

3

예 예기치 않은 동작입니다. 있는 UITableViewController 클래스는 테이블 뷰를 관리하는 컨트롤러 객체를 생성

개요 :

특히 단락 "개요"에, 문서의 here 자세히 설명되어 있습니다.

  • [...] 테이블 뷰를 포함하는 펜촉 파일이로드되면, 데이터 소스 및 nib 파일에 정의 된 객체가 위임

  • (존재하는 경우에는 다음과 같은 동작을 구현 어떤). nib 파일이 지정되지 않았거나 nib 파일에 데이터 소스 나 위임이 정의되어 있지 않은 경우 인 경우 UITableViewController은 데이터 소스 및 테이블보기의 위임을 자체으로 설정합니다.

+0

니스, 나는 문서에서 그것을 찾으려고했지만 맹세했다. 고맙습니다! – dccarmo

0

예. 그러면 자동으로 대리자 메서드가 설정됩니다. 내부적으로 그렇게하고 있기 때문입니다. 그것은 문서로 implenmentation

코딩의 경우 난데 :

@interface UITableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

그래서, 내부적 위임 방법을 설정하는 것입니다.

+2

Errr ... UITableViewController' 전혀'delegate'과'은'tableView'의 dataSource' 속성이 자동으로'UITableViewController'에 관련이 있다는 것을 의미하지 않는다 이러한 프로토콜을 준수'사실 ! – AliSoftware

+0

그렇습니다.하지만 그들은 때때로 내부적으로 관리하고 있습니다 ... –

+0

나는 동의합니다.하지만 클래스 참조에서 인용 한 라인이 전혀 "증명하지"않는다고 말하면서 그 프로토콜 적합성을 가질 수있었습니다 그리고 아직도이 행동이 아닙니다;) – AliSoftware

2

UITableViewController에서 ViewController에 의해 생성 된 UITableView의 델리게이트 및 데이터 소스는 기본적으로 ViewController입니다.

자신 만의 UITableView를 만들면 데이터 소스를 할당하고 직접 위임해야합니다.