Самое интересное
Здесь начинается самое интересное: объект RootViewController является нашим делегатом, и он должен передать управление новому контроллеру для отображения детализированного представления на экране. Как, по вашему мнению, должна решаться эта задача?
Создание экземпляра контроллера представления
Остается создать контроллер для детализированного представления. Экземпляры контроллеров представления создаются практически так же, как экземпляры других классов, не считая дополнительной возможности передачи файла .xib, из которого должно загружаться представление:
DrinkDetailViewController alloc initWithNibName: @"DrinkDetailView Controller" bundle:nil;
После того как контроллер детализированного представления будет создан, мы приказываем навигационному контроллеру занести новый контроллер в стек представлений. Давайте соберем воедино все, о чем говорилось выше: реализуем метод обратного вызова в делегате и создадим новый контроллер представления для занесения в стек.
Итак, мы обеспечили взаимодействие двух представлений. Постройте и запустите приложение.
Да, данных из полученного массива уже недостаточно.
Остается наладить отображение ингредиентов и инструкций в детализированном представлении — и приложение можно считать готовым. Чтобы вам не пришлось вручную вводить все ингредиенты и инструкции, мы подготовили новый файл с дополнительной информацией. Проблема в том, что эту информацию не удастся просто втиснуть в массив. Для включения подробных описаний рецептов в эту версию потребуется другая модель данных.
В словарях информация хранится в формате пар «ключ-значение»
Список рецептов представляет собой простой массив названий. Он хорошо подходит для заполнения табличного представления названиями коктейлей, но для загрузки подробной информации не подойдет. В новой версии вместо списка строк будет использоваться массив словарей с тремя ключами (название, ингредиенты и инструкции по приготовлению). С ключами связываются строковые значения с соответствующей информацией. Поскольку NSDictionary поддерживает протокол NSCoding, объекты этого класса могут сохраняться и загружаться из списков plist так же, как обычные массивы из предыдущей версии.
Зайдите по адресу _headfirstlabs.com/books/hfiphonedev/ и загрузите файл DrinksDirections.plist. Его имя отличается от имени предыдущего файла, поэтому в приложении придется внести пару незначительных изменений.
Откройте новый список plist в Xcode (также в каталоге Resources) и проверьте его содержимое — данные готовы к использованию!
Откройте код и замените все упоминания DrinkArray текстом DrinksDirections.
- Дата: 10-12-2014, 21:40