Возможность реализации одним классом функционала для ряда других классов Использование: • Ряд стандартных UI-контролов (UITableView, UINavigationController etc) • Удобен для использования в собственных классах и контролах • Часто используется в реализации MVC Важно: делегат, как правило, объявляется как assign/weak, во избежание циклических ссылок и memory leak.
• removeObserver:name:object: • postNotificationName:object: Важно: observer должен быть удален из списка NSNotificationCenter до того, как сам observer будет уничтожен.
на которых видно всю схему UI приложения; • Позволяет создавать .xib файлы с визуальным наполнением View / Controller. Как следствие, облегчает работу с UI: юзер может видеть экраны до фактической сборки приложения; • Идет в составе XCode.
Стандартные контейнеры: • UINavigationController • UISplitViewController (iPad) • UITabBarController Content View Controllers: Управляют вложенным контентом (View) Как правило, для каждого экрана создается свой контроллер
Обработка системных сообщений, изменение View; • Обработка сообщений от юзера, передача информации View Model; • Обработка изменений модели данных, изменение View; Как правило, является делегатом своих View и обрабатывает сообщения от модели данных (KVO, Notifications etc.)
организовать новую иерархию контроллеров: - presentModalViewController:animated: (до iOS 6.0) - dismissModalViewControllerAnimated: (до iOS 6.0) - presentViewController:animated:completion: (iOS 6.0 и выше) - dismissViewControllerAnimated:completion: (iOS 6.0 и выше)
- removeFromParentViewController Для получения стандартных контейнеров, в которые вложен контроллер: - navigationController - tabBarController - splitViewController
экране Особенности: • Может подстраивать размер шрифта так, чтобы текст уместился без обрезаний • Есть возможность рассчитать размер лейбла по строке и используемому шрифту • Может отображать несколько строк в рамках одного лейбла
с масштабированием); • Отобразить простую короткую анимацию (потребуется набор файлов с кадрами); Особенности: • Нужно помнить о памяти, особенно если проигрывается анимация или битмап большой.
кнопка. Особенности: • Метод оповещения о нажатии – Target/Action; • Установка картинки/текста производится специальным методом. Прямая работа с соответствующей subview не работает.
списка однотипных (N-типных) элементов. • Отображение одномерного/двумерного списка из нескольких элементов. Особенности использования: • Для наполнения данными и нотификации об изменениях использует паттерн Delegate (для нотификации – delegate, для данных - dataSource). • Имеет встроенную возможность переиспользования отображения ячеек.
numberOfSectionsInTableView: • tableView:numberOfRowsInSection: Основные полезные методы и свойства delegate (UITableViewDelegate): • tableView:heightForRowAtIndexPath: • tableView:willDisplayCell:forRowAtIndexPath: • tableView:didSelectRowAtIndexPath: