Подтвердить что ты не робот

UITableView против UITableViewController

Может ли кто-нибудь объяснить мне преимущества UITableViewController над UITableView. Обычно я использую контроллер, но основной вид таблицы кажется более гибким.

4b9b3361

Ответ 1

Я всегда использую UITableView. Я никогда не использую UITableViewController.

Использование UITableViewController сбивает с толку. Каждый контроллер должен делать один экран, кроме контроллеров контейнеров.

Ну, UITableViewController - это контроллер, и большую часть времени tableView просто не единственная вещь.

Если вы посмотрите на документацию: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewController_Class/Reference/Reference.html

UITableViewController предоставляет очень маленький новый интерфейс по сравнению с UITableView. Ничто из этого не является существенным.

– initWithStyle: 

(duh? Я инициирую свой tableView в nib, и я все равно настраивал многое)

Получение представления таблицы

  tableView  property 

(исходный tableView)

Настройка поведения таблицы

  clearsSelectionOnViewWillAppear  property 

(хорошо, просто поместите код на ViewWillAppear)

Обновление представления таблицы

  refreshControl  property 

[tableView reload]?

Итак, вы видите,

Поэтому, если вы не хотите, чтобы ваш код выглядел аккуратно (и не намного больше), нет оснований использовать UITableViewController, о котором я знаю.

Ответ 2

Я не думаю, что вы понимаете свой собственный вопрос.

UITableViewController - это контроллер.

UITableView - это представление.

Один не лучше другого, они совершенно разные объекты, используемые для совершенно разных вещей.

Я бы потратил некоторое время на изучение шаблона Model-View-Controller, который был распространен в русификации Cocoa и iPhone SDK.

Шаблон проектирования Model-View-Controller

Ответ 3

Идея заключается в том, что ViewControllers содержат дерево подзапросов (и подконтрольных элементов) и управляет отправкой событий в/из своих подзонов. Например, у вас может быть представление, содержащее изображение, и этот вид живет в контроллере представления, который обрабатывает изменения ориентации и предупреждения о памяти и т.д.

Ответ 4

Это одна вещь, которую я нахожу очень запутанной в отношении Cocoa: реализация Apple MVC (или, по крайней мере, терминология, которую они используют) вызывает сомнения. В Cocoa большинство представлений сами по себе действуют в некоторой емкости как контроллеры, поскольку их определяет шаблон MVC (просто посмотрите UITableView - - почти все его методы на самом деле являются методами управления). Поэтому у вас есть еще одна концепция Apple контроллера вида сверху того, что уже до некоторой степени является контроллером. Тот факт, что вам даже не нужно использовать UITableViewController вообще (даже при привязке данных), в основном доказывает, что представление действует как собственный контроллер. В MVC вы не можете иметь представление, привязанное к модели без контроллера (что вся точка контроллера в MVC).

Похоже, разработчикам Apple, что "контроллер просмотра" (например, UITableViewController) на самом деле является чуть более высокоуровневым классом помощника/менеджера, который управляет более низкоуровневым классом UITableView и включает несколько ключей дополнительные возможности, которые больше касаются того, как представление таблицы взаимодействует с общим пользовательским интерфейсом приложения.

Кроме того, похоже, что Apple намеревается, чтобы контроллер просмотра фактически был больше контроллером экрана, рекомендуя только один контроллер просмотра на экран (предположительно это означает, что вы не можете устанавливать контроллеры просмотра). Я утверждаю, что при вызове этой концепции контроллер представления является неправильным.

Пожалуйста, не стесняйтесь поправить меня на этом, я все еще очень новичок в Obj-C/ Cocoa сам.

Ответ 5

Ссылка выше возвращает "Страница не найдена". По какой-то причине даже исправленная ссылка возвращает ссылку "Страница не найдена" при гиперссылке (возможно, Apple не разрешает связывание на своем сайте разработчика).

Чтобы найти нужную информацию, перейдите по ссылке Apple Developer Connection (http://developer.apple.com/index.html) и выполните поиск по cocoa model-view- шаблон проектирования контроллера ".

В таблице результатов выберите "Руководство по основам cocoa: Cocoa Шаблоны проектирования". На этой странице прокрутите вниз Оглавление с левой стороны, пока не увидите элемент "Шаблон проектирования Model-View-Controller". Выберите этот элемент, чтобы узнать больше об этом шаблоне проектирования.

Ответ 6

UITableView is a view and UITableViewController is a controller having UITableView as its root view.

So by using UITableViewController:
1. You have one root view that is UITableView itself. So takes less memory than UITableView with UIView as parent view in controller.
2. Provides you ready to use template, if you needed a controller and UITableView as its main display view.
3. Static table views are only valid when embedded in UITableViewController instances.