Взаимодействие с пользователем: запрос и отображение данных

Адресная книга платформа UI обеспечивает три контроллера представления и один контроллер навигации для общих задач, связанных с работой с базой данных Address Book и контактной информацией. При помощи этих контроллеров вместо того, чтобы создать Ваше собственное, Вы сокращаете объем работы, необходимо сделать и предоставить пользователям более непротиворечивый опыт.

Эта глава включает некоторые списки короткого кода, которые можно использовать в качестве начальной точки. Для полностью обработанного примера посмотрите QuickContacts.

Что доступно

Адресная книга платформа UI обеспечивает четыре контроллера:

../Art/views_2x.png../Art/views_2x.png

Для использования этих контроллеров необходимо установить делегата к ним который реализации надлежащий протокол делегата. Вы не должны должны быть разделять эти контроллеры на подклассы; ожидаемый способ изменить их поведение Вашей реализацией их делегата. В этой главе Вы узнаете больше об этих контроллерах и как использовать их.

Запрос пользователя выбрать запись лица

ABPeoplePickerNavigationController класс позволяет пользователям просматривать свой список контактов и выбирать лицо и, в Вашей опции, одном из свойств того лица. Для использования людей средство выбора сделайте следующее:

  1. Создайте и инициализируйте экземпляр класса.

  2. Установите делегата, который должен принять ABPeoplePickerNavigationControllerDelegate протокол.

  3. Дополнительно, набор displayedProperties к массиву свойств Вы хотите выведенный на экран. Соответствующие константы определяются как целые числа; оберните их в NSNumber объект с помощью numberWithInt: метод для получения объекта, который может быть помещен в массив.

  4. Представьте людей средство выбора как модальный контроллер представления с помощью presentModalViewController:animated: метод. Рекомендуется представить его с помощью анимации.

Следующий листинг кода показывает, как контроллер представления, реализующий ABPeoplePickerNavigationControllerDelegate протокол может представить людей средство выбора:

ABPeoplePickerNavigationController *picker =
        [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];

Люди средство выбора вызывают один из методов его делегата в зависимости от действия пользователя:

Отображение и редактирование записи лица

ABPersonViewController класс выводит на экран запись на пользователя. Для использования этого контроллера сделайте следующее:

  1. Создайте и инициализируйте экземпляр класса.

  2. Установите делегата, который должен принять ABPersonViewControllerDelegate протокол. Чтобы позволить пользователю редактировать запись, установить allowsEditing к YES.

  3. Установите displayedPerson свойство к записи лица Вы хотите вывести на экран.

  4. Дополнительно, набор displayedProperties к массиву свойств Вы хотите выведенный на экран. Соответствующие константы определяются как целые числа; оберните их в NSNumber объект с помощью numberWithInt: метод для получения объекта, который может быть помещен в массив.

  5. Выведите на экран контроллер представления лица с помощью 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 класс позволяет пользователям создавать новое лицо. Для использования его сделайте следующее:

  1. Создайте и инициализируйте экземпляр класса.

  2. Установите делегата, который должен принять ABNewPersonViewControllerDelegate протокол. Для заполнения полей установите значение displayedPerson. Для помещения нового лица в определенную группу установить parentGroup.

  3. Создайте и инициализируйте новый контроллер навигации и установите его корневой контроллер представления в контроллер представления нового лица

  4. Представьте контроллер навигации как модальный контроллер представления с помощью 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 класс позволяет пользователю добавлять данные к существующей записи лица или создавать новую запись лица для данных. Для использования его сделайте следующее:

  1. Создайте и инициализируйте экземпляр класса.

  2. Создайте новое лицо, записывают и заполняют свойства, которые будут выведены на экран.

  3. Набор displayedPerson новому лицу записывают Вас создаваемый на предыдущем шаге.

  4. Установите делегата, который должен принять ABUnknownPersonViewControllerDelegate протокол.

  5. Чтобы позволить пользователю добавлять информацию, выведенную на экран контроллером представления неизвестного лица к существующему контакту или создавать новый контакт с ними, установить allowsAddingToAddressBook к YES.

  6. Выведите на экран контроллер представления неизвестного лица с помощью 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.