Лекция 10 CS193P Winter 2015 — Table View

Хотя вся Лекция 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 может автоматически настраивать высоту ячеек с использованием UITableViewAutomaticDimensionestimatedRowHeight .

Последняя и самая большая часть лекции посвящена демонстрационному примеру, клиенту 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-файле

Лекция 10 CS193P Winter 2015 iOS 8 try.pdf


Остальная часть лекции  в виде PDF-файла доступна на платной основе.