2012-07-24 3 views

답변

1

모델 (M) 또는 컨트롤러 (C)에 있어야하는지 묻는 경우를 가정합니다. jQuery과 두 개의 프로토콜이 있기 때문에 그리고 그것은 흥미로운 질문이있다 :

UITableViewDelegate 
UITableViewDataSource 

음을의 UITableViewDelegate 프로토콜은 일반적으로 컨트롤러 될 뷰의 '소유자'입니다 - 나는 가정 코드를 보지 못했다 그렇지 않으면.

그렇다면 UITableViewDataSource는 어디에 있어야합니까? 이는 애플의 개발자가 컨트롤러에 갈 것이라고 가정한다면, 왜뿐만 아니라 UITableViewDelegate 프로토콜에 통합, 이제

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

을 정의하는 프로토콜입니다? 문서는 (내 굵게)이 말한다 :

UITableViewDataSource 프로토콜은 는 jQuery과 객체에 대한 응용 프로그램의 데이터 모델을 매개하는 것을 객체에 의해 채택 입니다. 데이터 원본은 테이블보기 개체를 제공하고 테이블보기를 구성하고 수정해야하는 정보를 제공합니다.

데이터 모델의 대표로서 데이터 소스는 테이블 뷰의 모양에 관한 최소한의 정보를 에 제공합니다. 표보기 개체의 대리인 - UITableViewDelegate 프로토콜을 사용하는 개체 -이 정보를 제공합니다. 그러나 아마하지 동일한 컨트롤러가 실제로 UITableView을 관리하는 (- 정말 그것이 컨트롤러에 앉아한다는 뜻 "응용 프로그램의 데이터 모델을 매개"말에 의해서가 아니라 -

는 그래서는 모델에 앉아야 제안 할 것 UITableViewDelegate 프로토콜을 통해). 나에게 당신은 여러 가지 방법으로 이것을 배치하는 것을 볼 수있는 유연성을 가지고있는 것으로 보인다. 그러나 일반적인 결론은 제어기에서 보이는 코드의 99 %에서 UITableViewDelegate 대리인이기도하다는 것이다.

다음은 MVC의 Apple 설명서입니다. http://developer.apple.com/library/mac/documentation/General/Conceptual/CocoaEncyclopedia/Model-View-Controller/Model-View-Controller.html#//apple_ref/doc/uid/TP40010810-CH14-SW9

+0

thx you so much :) – marcL

0

컨트롤러 객체 (MVC의 C)의 목표는 모델 객체를 뷰 객체와 조정하는 것입니다. 따라서 cellForRowAtIndexPath 메서드의 본질은 주어진 셀 (뷰)에 데이터 (모델에서 오는)를 채우는 것이 컨트롤러에 속하는 것을 지시합니다.

이 접근법은 Apple의 모든 UITableViews 및 UITableViewController 관련 샘플 코드에서 설명됩니다.

관련 문제