Лекция 9 CS193P Winter 2017 — Table View (табличное представление данных).

Вся Лекция 9 посвящена единственной и очень важной теме — визуальной таблице Table View, которая является  в iOS основным способом отображения и взаимодействия с большими наборами данных. Таблица Table View изначально настроена на отображение очень большого объема данных (сотни тысяч и более строк) и использует эффективный механизм формирования очереди повторно используемых ячеек (Dequeue Reusable Cell) и делегирование dataSource для загрузки динамических данных. Помимо ДИНАМИЧЕСКИХ таблиц  профессор рассказывает и демонстрирует возможности СТАТИЧЕСКИХ таблиц, больше пригодных для всевозможного рода настроек (Settings).

Первая часть Лекции 9 представляет целый спектр проблем, связанных как со структурой и составными частями Table View, так и с использованием подкачки данных в таблицу из интернета в многопоточной среде. В условиях, когда ячейки в таблице Table View «уходят» и «приходят» на экран, а также повторно используются в целях эффективности, законы «Мира многопоточности» проявляют себя в полную силу. Пол Хэгерти показывает две вещи, которые вы все должны учитывать в условиях многопоточности.

Таблица Table View  может быть источником «переезда»( segue) на другой MVC. Каждая строка в таблице может иметь два различных типа segues. Один — если вы кликните на строке, и второй — если вы кликните на маленьком кружочке  с буквой i (информация).
В iOS механизм Autolayout может автоматически настраивать высоту ячеек с использованием UITableViewAutomaticDimensionestimatedRowHeight.
Вторая, не менее важная часть, Лекции 9 демонстрирует всю эту технологию работы с Table View на примере создания с «нуля» клиента Twitter, осуществляющего выборку данных по запросу, сформированному пользователем. Разбираются различные стили ячеек, но особенно подробно показано применение Custom стиля для ячейки таблицы, требующего специального subclass класса UITableViewCell.

В демонстрационном примере профессор показывает как работать в workspace c двумя равноправными проектами, один из которых фреймворк Twitter, а второй — обычное приложение Smashtag, использующее этот фреймворк.

Лекции и слайды на английском языке представлены в iTunes название “9.Table View. Код демонстрационного примера «L9 Smashtag» доступен как на  iTunes название “Lecture 9 Demo Code: Smashtag«, так и на Github.

Русскоязычный неавторизованный конспект Лекции 9, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.

Лекция 9 CS193P Winter 2017 — Table View (табличное представление данных).: 2 комментария

  1. Объясните, пожалуйста, почему данной свойство в TweetTableViewCell { var tweet = Twitter.tweet? } не противоречит концепции MVC. Ведь мы, тем самым, устанавливаем связь между View и Model.

    • Передача объекта tweet в View — TweetTableViewCell — никак не нарушает шаблон MVC— здесь tweet — это пассивная Модель, которая отвечает за хранение данных и View может и должно знать о ней. В MVC View может зависеть от пассивной модели, Модель не может зависеть от View.

Обсуждение закрыто.