Вернуть выбранный адрес телефона из адресной книги iPhone - PullRequest
0 голосов
/ 25 марта 2010

В Интернете я нашел учебник, расширяющий это приложение Apple QuickStart, которое является базовым приложением для адресной книги, и другое, которое возвращает первый номер телефона независимо от того, по какому номеру телефона был нажат Я хочу отображать только выбранный номер телефона на этикетке. Метка называется phoneNumber:

- (BOOL)peoplePickerNavigationController:

(ABPeoplePickerNavigationController *)peoplePicker

  shouldContinueAfterSelectingPerson:(ABRecordRef)person

                            property:(ABPropertyID)property

                          identifier:(ABMultiValueIdentifier)identifier{


ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSMutableArray *phones = [[NSMutableArray alloc] init];
int i;
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {
NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i)autorelease];

    [phones addObject:aPhone];
}

NSString *mobileNo = [phones objectAtIndex:0];
self.phoneNumber.text = phones;

[self dismissModalViewControllerAnimated:YES];

return NO;

}

Как убедиться, что метка выбрана пользователем, а не только первая запись массива (или любая другая запись массива, в которой я кодирую)

Спасибо

1 Ответ

2 голосов
/ 27 марта 2010

Я не уверен, что понимаю ваш вопрос, но если вы пытаетесь получить номер телефона и / или метку, которую фактически выбрал ваш пользователь, вы можете использовать это:

    - (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
        // ensure user picked a phone property
        if (property == kABPersonPhoneProperty) {
            ABMultiValueRef phone = ABRecordCopyValue(person, property);
            CFStringRef selectedNumber = ABMultiValueCopyLabelAtIndex(phone, identifier);
            CFStringRef selectedLabel = ABMultiValueCopyValueAtIndex(phone, identifier);
            // insert code to do something with the values above
            [self dismissModalViewControllerAnimated:YES];
            return NO; } // end if
        else {
            // display an alert or something - handle the error
} } // end else, end method

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

...