Взаимодействие с пользователем: запрос и отображение данных
Адресная книга платформа 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
.