Взаимодействие с пользователем: запрос и отображение данных
Адресная книга платформа UI обеспечивает три контроллера представления и один контроллер навигации для общих задач, связанных с работой с базой данных Address Book и контактной информацией. При помощи этих контроллеров вместо того, чтобы создать Ваше собственное, Вы сокращаете объем работы, необходимо сделать и предоставить пользователям более непротиворечивый опыт.
Эта глава включает некоторые списки короткого кода, которые можно использовать в качестве начальной точки. Для полностью обработанного примера посмотрите QuickContacts.
Что доступно
Адресная книга платформа UI обеспечивает четыре контроллера:
ABPeoplePickerNavigationControllerпредлагает пользователю выбирать запись лица из их адресной книги.ABPersonViewControllerвыводит на экран запись лица на пользователя и дополнительно позволяет редактировать.ABNewPersonViewControllerподсказки пользователь создают новую запись лица.ABUnknownPersonViewControllerпредлагает пользователю завершать частичную запись лица, дополнительно позволяет им добавлять его к адресной книге.


Для использования этих контроллеров необходимо установить делегата к ним который реализации надлежащий протокол делегата. Вы не должны должны быть разделять эти контроллеры на подклассы; ожидаемый способ изменить их поведение Вашей реализацией их делегата. В этой главе Вы узнаете больше об этих контроллерах и как использовать их.
Запрос пользователя выбрать запись лица
ABPeoplePickerNavigationController класс позволяет пользователям просматривать свой список контактов и выбирать лицо и, в Вашей опции, одном из свойств того лица. Для использования людей средство выбора сделайте следующее:
Создайте и инициализируйте экземпляр класса.
Установите делегата, который должен принять
ABPeoplePickerNavigationControllerDelegateпротокол.Дополнительно, набор
displayedPropertiesк массиву свойств Вы хотите выведенный на экран. Соответствующие константы определяются как целые числа; оберните их вNSNumberобъект с помощьюnumberWithInt:метод для получения объекта, который может быть помещен в массив.Представьте людей средство выбора как модальный контроллер представления с помощью
presentModalViewController:animated:метод. Рекомендуется представить его с помощью анимации.
Следующий листинг кода показывает, как контроллер представления, реализующий ABPeoplePickerNavigationControllerDelegate протокол может представить людей средство выбора:
ABPeoplePickerNavigationController *picker = |
[[ABPeoplePickerNavigationController alloc] init]; |
picker.peoplePickerDelegate = self; |
[self presentModalViewController:picker animated:YES]; |
Люди средство выбора вызывают один из методов его делегата в зависимости от действия пользователя:
Если пользователь отменяет, люди, средство выбора вызывает метод
peoplePickerNavigationControllerDidCancel:из делегата, который должен уволить людей средство выбора.Если пользователь выбирает лицо, людей, средство выбора вызывает метод
peoplePickerNavigationController:shouldContinueAfterSelectingPerson:из делегата, чтобы определить, должно ли люди продолжаться средство выбора. Чтобы предложить пользователю выбирать определенное свойство выбранного лица, возвратитьсяYES. Иначе возвратитесьNOи отклоните средство выбора.Если пользователь выбирает свойство, люди, средство выбора вызывает метод
peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:из делегата, чтобы определить, должно ли это продолжаться. Выполнять действие по умолчанию (набирающий телефонный номер, запуская новую электронную почту, и т.д.) для выбранного свойства, возвратаYES. Иначе возвратитесьNOи отклоните средство выбора с помощьюdismissModalViewControllerAnimated:метод. Рекомендуется отклонить его с помощью анимации..
Отображение и редактирование записи лица
ABPersonViewController класс выводит на экран запись на пользователя. Для использования этого контроллера сделайте следующее:
Создайте и инициализируйте экземпляр класса.
Установите делегата, который должен принять
ABPersonViewControllerDelegateпротокол. Чтобы позволить пользователю редактировать запись, установитьallowsEditingкYES.Установите
displayedPersonсвойство к записи лица Вы хотите вывести на экран.Дополнительно, набор
displayedPropertiesк массиву свойств Вы хотите выведенный на экран. Соответствующие константы определяются как целые числа; оберните их вNSNumberобъект с помощьюnumberWithInt:метод для получения объекта, который может быть помещен в массив.Выведите на экран контроллер представления лица с помощью
pushViewController:animated:метод текущего контроллера навигации. Рекомендуется представить его с помощью анимации.
Следующий листинг кода показывает, как контроллер навигации может представить контроллер представления лица:
ABPersonViewController *view = [[ABPersonViewController alloc] init]; |
view.personViewDelegate = self; |
view.displayedPerson = person; // Assume person is already defined. |
[self.navigationController pushViewController:view animated:YES]; |
Если пользователь касается на свойстве в представлении, контроллер представления лица вызывает personViewController:shouldPerformDefaultActionForPerson:property:identifier: метод делегата, чтобы определить, должны ли быть приняты меры по умолчанию для того свойства. Выполнять действие по умолчанию для выбранного свойства, такого как набирание телефонного номера или создание новой электронной почты, возврата YES; иначе возвратитесь NO.
Запрос пользователя создать новую запись лица
ABNewPersonViewController класс позволяет пользователям создавать новое лицо. Для использования его сделайте следующее:
Создайте и инициализируйте экземпляр класса.
Установите делегата, который должен принять
ABNewPersonViewControllerDelegateпротокол. Для заполнения полей установите значениеdisplayedPerson. Для помещения нового лица в определенную группу установитьparentGroup.Создайте и инициализируйте новый контроллер навигации и установите его корневой контроллер представления в контроллер представления нового лица
Представьте контроллер навигации как модальный контроллер представления с помощью
presentModalViewController:animated:метод. Рекомендуется представить его с помощью анимации.
Следующий листинг кода показывает, как контроллер навигации может представить новый контроллер представления лица:
ABNewPersonViewController *view = [[ABNewPersonViewController alloc] init]; |
view.newPersonViewDelegate = self; |
UINavigationController *newNavigationController = [[UINavigationController alloc] |
initWithRootViewController:view]; |
[self presentModalViewController:newNavigationController |
animated:YES]; |
Когда пользователь касается Сохранения или Кнопки отмены, контроллер представления нового лица вызывает метод newPersonViewController:didCompleteWithNewPerson: из делегата, с получающейся записью лица. Если пользователь сохранил, новая запись сначала добавляется к адресной книге. Если пользователь отменил, значение person NULL. Делегат должен отклонить контроллер представления нового лица с помощью контроллера навигации dismissModalViewControllerAnimated: метод. Рекомендуется отклонить его с помощью анимации.
Запрос пользователя создать новую запись лица из существующих данных
ABUnknownPersonViewController класс позволяет пользователю добавлять данные к существующей записи лица или создавать новую запись лица для данных. Для использования его сделайте следующее:
Создайте и инициализируйте экземпляр класса.
Создайте новое лицо, записывают и заполняют свойства, которые будут выведены на экран.
Набор
displayedPersonновому лицу записывают Вас создаваемый на предыдущем шаге.Установите делегата, который должен принять
ABUnknownPersonViewControllerDelegateпротокол.Чтобы позволить пользователю добавлять информацию, выведенную на экран контроллером представления неизвестного лица к существующему контакту или создавать новый контакт с ними, установить
allowsAddingToAddressBookкYES.Выведите на экран контроллер представления неизвестного лица с помощью
pushViewController:animated:метод контроллера навигации. Рекомендуется представить его с помощью анимации.
Следующий листинг кода показывает, как можно представить контроллер представления неизвестного лица:
ABUnknownPersonViewController *view = [[ABUnknownPersonViewController alloc] init]; |
view.unknownPersonViewDelegate = self; |
view.displayedPerson = person; // Assume person is already defined. |
view.allowsAddingToAddressBook = YES; |
[self.navigationController pushViewController:view animated:YES]; |
Когда пользователь заканчивает создавать новый контакт или добавлять свойства к существующему контакту, контроллер представления неизвестного лица вызывает метод unknownPersonViewController:didResolveToPerson: из делегата с получающейся записью лица. Если пользователь отменил, значение person NULL.