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, этот процесс даст вам большую гибкость.