Objective-C/iOS: подклассификация UITableViewController для пользовательского представления
Как мы все знаем, виды таблиц в Cocoa Touch - одна из самых смелых частей элементов фреймворка, которые там есть. В качестве удобства Apple предоставила нам класс классного представления для инкапсуляции функций табличного представления в vc, UITableViewController
.
В то же время есть моменты, когда мы хотим использовать функциональность табличного представления, не занимая весь экран. Однако, похоже, нет никакого способа сделать это путем подкласса UITableViewController
. Вместо этого мне пришлось подключить табличное представление и вручную подписаться на UITableViewDelegate
и UITableViewDataSource
. Если я попытаюсь выполнить подкласс UITableViewController
, мое приложение выйдет из строя, прежде чем оно сможет даже поместить представление на экран...
Мой вопрос: есть ли что-то, что мне не хватает? При подклассовке UITableViewController
я подключу свой пользовательский вид таблицы к свойству tableView в UITableViewController
. Есть ли что-то еще, что я должен сделать?
Ответы
Ответ 1
UITableViewController
добавляет незначительные удобства по сравнению с UIViewController
: он создает и позиционирует представление таблицы, подключает делегат и источник данных (как правило, сам по себе), передает свойство управления представлением editing
через таблицу и делает пару полезных битов пользовательского интерфейса, когда появляется представление. (Подробнее см. [Docs] [1].)
Почти все вышесказанное - это либо A) вещи, которые вам нужно изменить, чтобы иметь таблицу без полноэкранного просмотра, или B) вещи, которые вы можете делать по одной или двум линиям, а какие UITableViewController
только для вашего удобства. Для таких случаев вам лучше использовать свой собственный подкласс UIViewController
.
Ответ 2
Шаг 1: Подкласс UIViewController
вместо UITableViewController
MyTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
Шаг 2: Используйте конструктор интерфейса, чтобы удалить табличный вид и пользовательский вид
Шаг 3: объявите свойство tableView как IBOutlet
в заголовочном файле MyTableViewController
и привяжите его к tableView в построителе интерфейса
IMHO, этот процесс даст вам большую гибкость.