2011-12-28 2 views

답변

19

TableViewController는 TableView가 내장 된 ViewController입니다. TableViewController는 이미 필요한 선언 된 대리자 메서드 및 설정을 갖습니다. 이 VC는 이미 TableView 대리인 및 데이터 소스입니다. 크기를 조정할 수 없습니다. 위쪽은 사용의 용이성이며, 단점은 매우 제한된 유연성입니다.

TableView는 TableView (UIView의 하위 클래스)입니다. 그것은 ViewController에 추가 될 수 있고 다른 뷰 기반 객체와 함께 사용되는 등 크기가 조절되고 재사용 될 수 있습니다. 장점은 유연성입니다. 단점은 직접 대리인과 데이터 소스를 설정해야한다는 것입니다. 유연성).

또 다른 한 가지 주목할 점은 새로운 정적 TableView 셀 (iOS5의 일부)을 사용할 때 TableViewController를 사용해야한다는 것입니다.

+0

'UITableViewController'를 사용할 때 같은 화면에서 다른 컨트롤과 크기 조정/공유가 부족하다는 점을 언급하는 것이 중요합니다. 글쎄, 다른 한편으로, 다른 컨트롤을 위해서'tableHeaderView'와'tableFooterView' 파트를 항상 사용할 수 있습니다. – Till

+0

사실, 정적 인 SearchBar (스크롤하지 않음)를 사용하는 것과 같은 작업을 수행 할 때 TableView가있는 VC가 잘 작동합니다. –

4

UITableViewControllerUIViewController의 하위 클래스입니다. 이미 루트 뷰로 UITableView을 가지고 있다고 가정하므로 코드에서 tableView (self.tableView)에 액세스 할 수 있습니다. UITableViewDataSourceUITableViewDelegate 프로토콜을 구현합니다. 또한 오버라이드 할 수있는 메소드가 많이 있습니다. XIB 파일에 의존하지 않아도됩니다. 왜냐하면 이미 가지고있는 것을 알고 있기 때문입니다 (UITableView을 rootView로 사용).

UITableView는 일반적으로 당신은 웁니다 (데이터 소스)과 (위임) 작업을하기 위해 나는 당신의 UIViewController에 위에 언급 한 프로토콜을 준수해야합니다, 단지 UIView, 당신은 아마 함께 IBOutlet을 만들어야합니다 귀하의 UITableView에 대한

한편으로는 속도가 있지만 다른 경로만큼 유연하지 않습니다. 다른쪽에는 반대가 있습니다.

+0

당신의 대답은 일반적으로 정확하지만 제 취향에 약간의 IB 중심입니다. 명확하게하기 위해 IBOutlets는 뷰를 배치하기 위해 InterfaceBuilder를 사용하려는 경우에만 필요합니다. 그 작업은 분명히 일반 코드를 사용하여 성취 될 수 있습니다. – Till

+0

내가 할 수있을 때마다'InterfaceBuilder'를 사용하는 편이 더 빠릅니다. 더 빠르고 코드를 깨끗하게 유지합니다. 물론 코드에서 'UITableView'를 선언하고 UIView를 추가 할 수 있습니다. 다만 마음에 들지는 않습니다. – Peres

관련 문제