UITableViewController против UIViewController + UITableView
Вы когда-нибудь использовали UITableViewController
? Вы когда-нибудь использовали UIViewController and UITableView
? Каковы различия между этими двумя решениями? Что для них является хорошей практикой?
Эта заметка представляет собой быстрое сравнение UITableViewController и UIViewController + UITableView
.
я позвоню UIViewController + UITableView
является Free TableView
UITableViewController
это особый UIViewController
. Его представление представляет собой UITableView, не может изменять ограничения. Вы не можете добавить вид в UITableView
без клетки.
Преимущества
- Автоматически перемещать
contentOffset
в текущее активное текстовое поле. - Хорошая практика для экрана журнала чата, экрана формы.
- Принять статическое табличное представление: очень легко и быстро создать форму с помощью Storyboard
Недостатки
Не удается отобразить представление состояния путем добавления в представление. Вы можете сделать это, добавив в tableHeaderView или tableFooterView, но вам придется обрабатывать много вещей.
Не может наследоваться от BaseController. У вас есть BaseController со многими настройками внутри, такими как stateView, loadData, setupUI и т. д., и вы не можете наследовать это с помощью
UITableViewController
.Невозможно добавить закрепленный вид сверху или снизу, как показано ниже.
Free TableView — это UIViewController
и добавить UITableView
в поле зрения. Вы можете легко установить ограничения для UITableView
.
Преимущества
- Очень гибкий. Вы можете показать/скрыть tableView, установить отступы для tableView.
- Хорошо для государственной демонстрации. В демо я показываю, что пустое состояние — это зеленый UIView в центре экрана.
Недостатки
- Не принимать статическое представление таблицы.
- Не двигаться автоматически
contentOffset
в текущее активное текстовое поле.
Исправить недостатки
Это уловка. Подробно напишу позже:
- Добавлять
UITableView
сdatasource
представляет собой массивUITableCell
. - Добавьте библиотеку для обработки активированного текстового поля. Я предлагаю библиотеку Хокона Богена (скачать по адресу Гитхаб).
Объясните для демонстрации
У меня есть демо для этого. Скачать здесь.
knController
является UIViewController. Я сделал свой собственный контроллер для управления созданием пользовательского интерфейса с помощью кода.knCustomTableController
бесплатно- Некоторые функции, такие как
horizontal:toView:space
,fill:toView:space
мои библиотеки Auto Layout, имяknContrainsts
. - Пустое состояние в демо — это просто зеленый UIView. Я не хочу добавлять больше кода, чтобы сделать его более сложным.
Вывод
Free TableView
имеет недостатки, но легко решается. Это решение гораздо более гибкое и простое в управлении.UITableViewController
все еще имеет хорошую практику, которая не может заменитьFree TableView
- Понимание различий может помочь нам выбрать правильный вариант для нашей ситуации.
Наслаждайтесь кодированием.