Хотя вся Лекция 10 посвящена Table View, начинается она с маленькой темы, посвященной UITextField
UITextField
Пол Хэгерти предупреждает от чрезмерного использования UITextField на iPhone и даже на iPad.
В силу малости клавиатуры на iPhone вам захочется построить пользовательский интерфейс приложения без использования текстового поля. На iPad — ситуация лучше, но даже там пользователи скорее предпочтут что-то выбирать и кликать, чем прибегать к клавиатуре для набора текста. Если вы создадите пользовательский интерфейс с текстовым полем и попробуете что-то напечатать, то подумаете :”А это здорово!” Но это не так, потому что на симуляторе может работать клавиатура вашего компьютера, и UI может показаться действительно замечательным. Но когда пользователь начнет пользоваться вашим приложение, то возненавидит ваш UI. Так что будьте внимательны с UITextField. Но иногда вам абсолютно необходимо получить произвольную строку от пользователя и может понадобиться UITextField.
Поскольку использование текстового поля связано с появлением и скрытием клавиатуры, а также с тем, что клавиатура может «заслонить» текстовое поле и не позволить вводить текст, то этому вопросу уделяется большое внимание. Рассматриваются различные способы решения, начиная от привлечения делегата UITextField и кончая использованием специальных уведомлений UIKeyboard{Will,Did}{Show,Hide}Notifications.
UITableView
Очень подробно рассказывается о структуре и составных частях динамических и статических таблиц, об использовании делегатов dataSource и delegate для загрузки динамических данных в таблицу и управления ее внешним видом. Профессор предлагает, если позволит UI, использовать готовые MVC — Table View Controllers, которые автоматически сами устанавливают себя как dataSource и delegate. Подробно описывается использование трех обязательных методов dataSource:
- число секций — numberOfSectionsInTableView
- число строк в каждой секции — numberOfRowsInSection
- views для каждой ячейки таблицы — cellForRowAtIndexPath.
Разбираются различные стили ячеек, включая Custom стиль, требующий специального subclass класса UITableViewCell.
Table View может быть источником segue. Каждая строка в таблице может иметь два различных типа segues. Один — если вы кликните на строке, и второй — если вы кликните на маленьком кружочке справа (например, Disclosure Indicator). В любом случае вы должны установить идентификатор segue как всегда, а затем реализовать метод prepareForSegue.
Рассматриваются вопросы синхронизации таблицы с динамическими данными…
Начиная с iOS 8 Autolayout может автоматически настраивать высоту ячеек с использованием UITableViewAutomaticDimension/ estimatedRowHeight .
Последняя и самая большая часть лекции посвящена демонстрационному примеру, клиенту Twitter, показывающему выбранные твиты в табличном виде с Custom ячейками. Максимально показаны возможности такого мощного и в тоже время простого в применении объекта в iOS как UITableView. Демонстрируется использование Refresh Control.
Лекция и слайды на английском языке находятся на iTunes название “10. Table View.”. Код для Демонстрационного примера «Smashtag» и вспомогательный класс «Twitter» доступены на Stanford. Профессор использовал актуальный на тот момент Swift 1.1. Вариант демонстрационного примера «Smashtag» и вспомогательного класса «Twitter» для Swift 1.2 выложен на том же сайте Stanford.
Для Swift 2.0 и Xcode 7 код демонстрационных примеров находится здесь.
Русский неавторизованный конспект лекции , хронометрированный через каждые 5 минут, представлен в PDF — файлах.
Начало конспекта находится в PDF-файле
Остальная часть лекции в виде PDF-файла доступна на платной основе.