2009-12-09 3 views
2

Je suis actuellement en mesure d'accéder avec succès et d'obtenir des données du peoplePickerNavigationController, mais ce que je voudrais faire, c'est avoir accès à l'adresse e-mail du contact, puis la fenêtre modale est fermée lorsque le contact le nom est pressé.Obtenir l'adresse e-mail du carnet d'adresses iPhone

Scénario:

"Button is clicked to add a contact 
AddressBook Modal Window slides into view 
Name of Contact is pressed 
If available, the contact's email address is stored in an array 
Dismiss modal window" 

Mon code actuel se compose de:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier { 
    ABMultiValueRef container = ABRecordCopyValue(person, property); 
    CFStringRef contactData = ABMultiValueCopyValueAtIndex(container, identifier); 
    CFRelease(container); 
    NSString *contactString = [NSString stringWithString:(NSString *)contactData]; 
    CFRelease(contactData); 

    NSLog(@"Value is: %@", contactString); 

    [self dismissModalViewControllerAnimated:YES]; 
    return NO; 
} 

Répondre

5

Voici ce que je fais.

if(property == kABPersonEmailProperty) { 
    CFTypeRef prop = ABRecordCopyValue(person, property); 
    CFIndex index = ABMultiValueGetIndexForIdentifier(prop, identifierForValue); 
    NSString *email = (NSString *)ABMultiValueCopyValueAtIndex(prop, index); 

    ... 

    CFRelease(prop); 
    [email release]; 
} 
+0

maintenant je l'ai mis dans la méthode 'peoplePickerNavigationController: shouldContinueAfterSelectingPerson: property: identifier:'? Parce que cela fait la même chose le code que j'ai fourni fait ... – rson

+0

désolé, oui cela doit être dans la méthode, alors si vous avez ouvert le PeoplePicker modalement vous devez le rejeter comme vous l'avez ci-dessus. –