2010-01-12 1 views
5

UIViewController은 여러 개의 데이터 소스로 tableView을 표시 할 수 있어야합니다. UITableView은 화면의 절반 크기에 걸쳐 있으며 다른 데이터를 통과 할 수있는 위로 및 아래로 버튼이 있습니다. 위아래 버튼이 눌릴 때마다 UIViewAnimationTransitionCurlDown 또는 비슷한 것을 사용하여 다음 UITableView을 표시하고 싶습니다.한 UIViewController 여러 UITableViews 처리하는 가장 좋은 방법은?

질문은 : tableView을 각각 포함하는 복수 UIViewControllers이 필요합니까? 방금 UITableView의 인스턴스를 하나 만들고 위 또는 아래 버튼을 누르면 해당 데이터 소스를 변경해야하나요? UITableView의 인스턴스가 하나 뿐인 경우 화면의 일부분에 컬 전환을 적용하여 새로운 tableView이 들어오는 것처럼 보이게하려면 어떻게해야합니까?

답변

5

왜 각 테이블보기가 자신의 UITableViewController에 속해 있고 현재 화면의보기 컨트롤러 내에 중첩되어있는 것이 좋습니까? 이 방법으로 화면의보기 컨트롤러는 하위보기를 서로 바꿔야합니다. 각보기에는 데이터를 표시하는 데 필요한 논리가 포함 된 테이블보기 컨트롤러가 있습니다.

마지막으로 귀하의 기능과 데이터 세트가 어떻게 생겼는지에 달려 있습니다. 테이블 뷰 데이터 소스 & 델리게이트 코드를 한 번 구현하여이 클래스에 실제 데이터 소스를 주입하는 것이 더 쉬워 질 수 있습니다. 또는 각 테이블 뷰에 대한 사용자 정의 데이터 소스 코드를 작성하는 것이 더 쉬울 수 있습니다.

+0

어떻게 한 뷰 컨트롤러를 다른 컨트롤러에 중첩 시키시겠습니까? 내가 subviews 및 모든 추가하지만, uitableviewcontroller 이해합니까? – randombits

+1

"상위"보기 컨트롤러는 적절한 테이블보기 컨트롤러를 만들고보기를 표시합니다. 별도의보기 컨트롤러로 제어하여 동시에 여러 화면을 볼 수있는 이유가 없습니다. – pix0r

+1

네, 기본적으로 viewDidLoad 메서드는 단순히 topTableController = [[MyTopTableController alloc] init]과 같은 작업을 수행 할 수 있습니다. topTableController.view = self.topTableView; topTableController.delegate = self; (또는 nib 파일에서 비슷한 일을한다.) 이미 이것을 보았을 때 하나의 컨트롤러를 하나의 델리게이트로 사용하려고 시도하는 것보다는 여러 테이블에 대해 하나의 컨트롤러를 사용하는 것이 더 쉽다. 대리자 메서드는 if() 또는 switch() 할 수있는 UITableView에 대한 포인터를 전달하기 때문에 수행 할 수 있지만 여러 "하위 컨트롤러"를 사용하는 더 깨끗한 디자인 일 수 있습니다. – Nimrod

관련 문제