2012-04-20 6 views
2

MainViewController가 있는데 두 개의 UITableView를 각각 다른 셀로 추가하려고합니다. 하지만, MainViewController 코드를 테이블 위임 메소드에서 체크하고, 어떤 테이블인지 확인한 다음, MainViewController 코드를 작동 시켜서 막히고 싶지 않습니다. 너무 지저분해진다.UITableView를 서브 클래 싱하는시기는 언제입니까?

그래서 내가 jQuery과 하위 클래스 내가 MainViewController에 테이블을 추가 할 때이 cellForRow 자체로 다른 테이블 방법 및이 방법으로 처리 할 것이라고 생각, 모든 I는해야 할 것

CustomTable *customTable = [[CustomTable alloc] init]; 
[self.view addSubview:customTable]; 

및 모든 대리자 메서드를 해당 클래스에서 처리 할 수 ​​내 MainViewController 혼란 무료.

내가 잘못 접근하고 있습니까? UITableViewController 대신 서브 클래 싱해야합니까? 차이점이 뭐야?

+1

UITableViewDelegate/DataSource를 구현하는 NSObject의 두 개의 하위 클래스를 만들고 각 MainViewController에 대해 각 클래스 중 하나를 만들고 제공 한 정보로 테이블을 처리하게하는 이유는 무엇입니까? – EmilioPelaez

+0

이해가 안되요 .1 개의 MainViewController와 2 개의 tableViews 만 있습니다. – Snowman

+0

일반 UITableView를 생성한다고 가정 해 봅시다. 해당 테이블의 대리자 메서드를 처리하기 위해 다른 NSObject 하위 클래스를 할당 할 수 있습니까? 니가 말하는거야? 내가 어떻게 그럴 수 있니? – Snowman

답변

10

서브 클래 싱 할 때 UITableView? 지금은 아니야.

View Controller의 멤버 변수 인 두 개의 클래스를 만듭니다. 두 개의 새 클래스 각각에서 테이블 뷰 대리자를 가리 키십시오.

코코아에서는 Java와 C#에서 일반적으로하는 것처럼 클래스를 상속하지 않고 결합하는 경향이 있습니다.

+1

나는 이것을 두 번 투표 할 수 있으면 좋겠다. 테이블 뷰 델리게이트가 뷰 컨트롤러를 소유하고있는 곳에서는 쉽게 얻을 수 있습니다. 그 습관을 깨면 여기에 멋진 대답이됩니다. – danh

+0

여기서 의미하는 바를 조금 더 설명 할 수 있습니까? 이 일에 어떻게 가겠습니까? – MobileMon

+0

"@class"구문을 사용합니까? – MobileMon

5

객관적인-C 프로그래머 등 전문 작업 3 년 동안, 나는, 패턴이, 코코아에 따라되면 jQuery과 하위 클래스 필요가 없었다 - (protocols를 사용 포함) MVCdelegations를하면서도 강력한 단지 간단합니다 충분히. 그리고 populating a tableview is just one of the best examples.

이 주제를 모두 이해했는지 확인하십시오. 그렇지 않으면 프레임 워크와 지속적으로 경쟁하게됩니다.