Учебное руководство по быстрому запуску

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

Создайте и сконфигурируйте проект

  1. В XCode создайте новый проект из Единственного Шаблона приложений Представления.

  2. Соедините Адресную книгу UI и платформы Адресной книги к Вашему проекту.

Создайте UI и заголовочный файл

При создании пользовательского интерфейса Вы используете в своих интересах возможность XCode объявить необходимые действия и свойства, создавая большинство заголовочного файла для Вас.

  1. Откройте основной файл раскадровки (MainStoryboard.storyboard).

  2. Добавьте кнопку и две метки к представлению путем позорения их от панели библиотеки. Расположите их как показано на рисунке 1-1.

  3. Откройте заместителя редактора.

  4. Подключите кнопку к новому вызванному методу действия showPicker: на контроллере представления.

    Это ставит цель и действие кнопки в раскадровке, добавляет объявление метода к заголовочному файлу и добавляет тупиковую реализацию метода к файлу реализации. Вы заполните тупиковую реализацию позже.

  5. Подключите две метки к двум новым вызванным свойствам firstName и phoneNumber из контроллера представления.

    Это создает соединение в раскадровке и добавляет объявление свойств к заголовочному файлу.@synthesize строка для свойств в файле реализации.

Рисунок 1-1  , Выкладывающий интерфейс
A window in Interface Builder with a button in the center, titled "Tap Me!", and two text labels below it that say "First Name" and "Last Name".

В этой точке ViewController.h, заголовочный файл для контроллера представления, почти закончен. В конце @interface строка, объявите, что класс контроллера представления принимает ABPeoplePickerNavigationControllerDelegate протокол путем добавления следующего:

<ABPeoplePickerNavigationControllerDelegate>

Перечисление 1-1 показывает законченный заголовочный файл.

Перечисление 1-1  законченный заголовочный файл

#import <UIKit/UIKit.h>
#import <AddressBookUI/AddressBookUI.h>
 
@interface ViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate>
 
@property (weak, nonatomic) IBOutlet UILabel *firstName;
@property (weak, nonatomic) IBOutlet UILabel *phoneNumber;
 
- (IBAction)showPicker:(id)sender;
 
@end

Запишите файл реализации

В ViewController.m, файл реализации для контроллера представления, XCode уже создал тупиковую реализацию showPicker: метод. Перечисление 1-2 показывает полное внедрение, создающее новых людей средство выбора, устанавливающее контроллер представления как его делегата и представляющее средство выбора как модальный контроллер представления.

Перечисление 1-2  , Представляющее людей средство выбора

- (IBAction)showPicker:(id)sender
{
    ABPeoplePickerNavigationController *picker =
            [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
 
    [self presentModalViewController:picker animated:YES];
}

Люди средство выбора вызывают методы на его делегате в ответ на действия пользователя. Перечисление 1-3 показывает реализацию этих методов. Если пользователь отменяет, первый метод вызывают для увольнения людей средство выбора. Если пользователь выбирает лицо, второй метод вызывают, чтобы скопировать имя и телефонный номер лица в метки и уволить людей средство выбора.

Когда пользователь касается на свойстве выбранного лица в средстве выбора, средство выбора людей вызывает третий метод. В этом приложении люди всегда отклоняется средство выбора, когда пользователь выбирает лицо, таким образом, нет никакого способа для пользователя выбрать свойство того лица. Это означает, что никогда не будут вызывать метод. Однако, если бы это было не учтено, то реализация протокола была бы неполной.

Перечисление 1-3  , Отвечающее на пользовательские действия у людей средство выбора

- (void)peoplePickerNavigationControllerDidCancel:
            (ABPeoplePickerNavigationController *)peoplePicker
{
    [self dismissModalViewControllerAnimated:YES];
}
 
 
- (BOOL)peoplePickerNavigationController:
            (ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person {
 
    [self displayPerson:person];
    [self dismissModalViewControllerAnimated:YES];
 
    return NO;
}
 
- (BOOL)peoplePickerNavigationController:
            (ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person
                                property:(ABPropertyID)property
                              identifier:(ABMultiValueIdentifier)identifier
{
    return NO;
}

Последний метод, который реализует, показан в Перечислении 1-4, выводящем на экран имя и телефонный номер. Обратите внимание на то, что код для имени и телефонного номера отличается. Имя является свойством строки — записи лица имеют точно одно имя, которое может быть NULL. Телефонный номер является свойством мультизначения — записи лица имеют нуль, один, или многократные телефонные номера. В этом примере используется первый телефонный номер в списке.

Перечисление 1-4  , Выводящее на экран информацию лица

- (void)displayPerson:(ABRecordRef)person
{
    NSString* name = (__bridge_transfer NSString*)ABRecordCopyValue(person,
                                               kABPersonFirstNameProperty);
    self.firstName.text = name;
 
    NSString* phone = nil;
    ABMultiValueRef phoneNumbers = ABRecordCopyValue(person,
                                    kABPersonPhoneProperty);
    if (ABMultiValueGetCount(phoneNumbers) > 0) {
       phone = (__bridge_transfer NSString*)
               ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
    } else {
        phone = @"[None]";
    }
    self.phoneNumber.text = phone;
    CFRelease(phoneNumbers);
}

Сборка и запущенный приложение

При запуске приложения первой вещью, которую Вы видите, является кнопка и две пустых текстовых метки. Ответвление кнопки переводит людей в рабочее состояние средство выбора. Когда Вы выбираете лицо, людей, средство выбора уходит и имя и телефонный номер лица, которое Вы выбрали, выведены на экран в метках.