Уроки iPhone SDK: (Часть 2) И еще об MVC на iPhone Stragea - Real-Time стратегия для iPhone
Май 30

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

Для начала создаем новое приложение “View-Based Application“, присваивая ему имя “addressBook“.

screen-capture-300x225

Теперь нужно настроить для проекта четыре спецификатора IBOutlet и один IBAction. Не забудем и о заголовочных файлах для фреймворка адресной книги. Итак, откройте “addressBookViewController.h” и отредактируйте код, как показано ниже:

1
2
3
4
5
6
7
8
9
10
11
12
13
#import
#import
#import
@interface addressBookViewController : UIViewController {
IBOutlet UIButton *button;
IBOutlet UILabel *firstName;
IBOutlet UILabel *lastName;
IBOutlet UILabel *number;
}

-(IBAction)getContact;

@end

Следующим шагом необходимо добавить файлы фреймворка. Щелкнув правой кнопкой на опции “addressBook” в разделе “Targets” (панель слева), выберите “Get Info“.

screen-capture-2

Найдите внизу знак + и щелкните по нему. Задача — добавить следующие элементы в “AddressBook.framework” и “AddressBookUI.framework“.

screen-capture-3

Теперь определимся с интерфейсом представления — дважды щелкните на файле “addressBookViewController.xib“. Нужный нам результат представлен ниже:

screen-capture-4-206x300

Прочерки —– я использовал, чтобы указать на наличие там метки “UILabel“. Следующим шагом настроим соединения для четырех переменных типа outlet и одного действия. Вот какой результат интересен в итоге:

screen-capture-5

Нажмите для увеличения

Пора открыть файл “addressBookViewController.m” и добавить приведенные ниже методы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
-(IBAction)getContact {
// создаем отборщик (picker)
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
// помещаем делегат отборщика к
"picker.peoplePickerDelegate = self;"

// отображаем отборщик
[self presentModalViewController:picker animated:YES];
// освобождаем
[picker release];
}

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
// отдаем управление обратно основному контроллеру
[self dismissModalViewControllerAnimated:YES];
}

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {

// задаем имя
firstName.text = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);

// задаем фамилию
lastName.text = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);

// задаем номер
/*
эта функция задает найденный первым номер

при отсутствии номера для контакта вероятен
сбой
*/

ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonPhoneProperty);
number.text = (NSString*)ABMultiValueCopyValueAtIndex(multi, 0);

// удаляем контроллер
[self dismissModalViewControllerAnimated:YES];

return NO;
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{
return NO;
}

Щелкнув на кнопке “Build and Go“, получим следующий вариант:

screen-capture-6

screen-capture-7

screen-capture-8

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (3 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...


Оставьте комментарий