iPhone ABPeoplePickerNavigationController - Comment sélectionner deux entrées simples de deux propriétés à plusieurs valeurs différentes d'une personne à partir du répertoire

Je suis près de désespoir que je cherche une solution depuis des semaines maintenant.

Le Problème est simple:

  • Via le ABPeoplePickerNavigationController (comme un ModalView), une personne doit être sélectionné.
  • Ensuite seulement (par exemple) les adresses de Courrier électronique doit être affiché et l'utilisateur doit sélectionner un.
  • Après la sélection d'une adresse e-Mail juste l' (par exemple) les numéros de téléphone doit être affiché et l'utilisateur doit sélectionner un.

La solution jusqu'à ce que le troisième aspect est bien connu:

- (IBAction)importFromAddressBook 
{
    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 
{
    [peoplePicker setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonEmailProperty]]];
    return YES;
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person
                                property:(ABPropertyID)property
                              identifier:(ABMultiValueIdentifier)identifier 
{
    //===PROBLEM=== Now I do have a mail address and I want to have a phone number right afterwards.

    //Something like this would be straightforward, but the view does not change this way:
    [peoplePicker setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]];
    //Here misses the important code.


    //And only when I also got a phone number through this or a similar method I want to call:
    [peoplePicker dismissModalViewControllerAnimated:YES];

    //I do not want to start default behaviour with the mailaddress and/or phone number:
    return NO;
}

La bonne approche semble pousser un semblable peoplePicker Vue sur la NavigationController de la ModalView, mais je ne sais pas comment.

Si quelqu'un a une idée ça serait super!

Si vous voulez voir un tel comportement en action, vous pouvez avoir un regard sur l'Amazon app: Si vous allez à travers les premières étapes d'une commande, vous pouvez sélectionner une adresse de livraison exactement de cette manière: à Partir de la Liste des Contacts -> Sélectionnez une Personne -> Sélectionnez une Adresse -> choisissez un numéro de Téléphone.
Là, tout (semble) de prendre place dans la modale de vue avec juste une hiérarchie de navigation avec un niveau plus que dans le code indiqué ci-dessus.

source d'informationauteur André