Вся Лекция 9 посвящена единственной и очень важной теме — визуальной таблице Table View, которая является в iOS основным способом отображения и взаимодействия с большими наборами данных. Таблица Table View изначально настроена на отображение очень большого объема данных (сотни тысяч и более строк) и использует эффективный механизм формирования очереди повторно используемых ячеек (Dequeue Reusable Cell) и делегирование dataSource для загрузки динамических данных. Помимо ДИНАМИЧЕСКИХ таблиц профессор рассказывает и демонстрирует возможности СТАТИЧЕСКИХ таблиц, больше пригодных для всевозможного рода настроек (Settings).
Первая часть Лекции 9 представляет целый спектр проблем, связанных как со структурой и составными частями Table View, так и с использованием подкачки данных в таблицу из интернета в многопоточной среде. В условиях, когда ячейки в таблице Table View «уходят» и «приходят» на экран, а также повторно используются в целях эффективности, законы «Мира многопоточности» проявляют себя в полную силу. Пол Хэгерти показывает две вещи, которые вы все должны учитывать в условиях многопоточности.
Таблица Table View может быть источником «переезда»( segue) на другой MVC. Каждая строка в таблице может иметь два различных типа segues. Один — если вы кликните на строке, и второй — если вы кликните на маленьком кружочке с буквой i (информация).
В iOS механизм Autolayout может автоматически настраивать высоту ячеек с использованием UITableViewAutomaticDimension/ estimatedRowHeight.
Вторая, не менее важная часть, Лекции 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 доступны на платной основе.
Объясните, пожалуйста, почему данной свойство в TweetTableViewCell { var tweet = Twitter.tweet? } не противоречит концепции MVC. Ведь мы, тем самым, устанавливаем связь между View и Model.
Передача объекта tweet в View — TweetTableViewCell — никак не нарушает шаблон MVC— здесь tweet — это пассивная Модель, которая отвечает за хранение данных и View может и должно знать о ней. В MVC View может зависеть от пассивной модели, Модель не может зависеть от View.