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é
Vous devez vous connecter pour publier un commentaire.
Je suppose que cela pourrait être ce que vous voulez:
L'idée est de créer un autre ABPersonViewController exemple, et laissez votre sélecteur de personnes de pousser, depuis ABPeoplePickerNavigationController est une sous-classe de NSPeoplePickerNavigationController.
Dans mon application iPhone Pastie, j'ai pris une approche différente. le texte d'alt http://manicwave.com/images/pastie/contactdetails.png
- Je utiliser le peoplePicker pour sélectionner la personne, puis ouvrez un contact (personne) l'éditeur.
C'est juste un simple point de vue:
Nom Du Contact
Numéro de téléphone > par défaut, premier numéro de téléphone
Adresse e-mail > les valeurs par défaut à la première adresse de courriel
Chaque de numéro de téléphone et adresse email afficher une autre vue montrant la liste de téléphones ou adresses e-mail, avec une coche en regard de la mesure actuellement sélectionnée.
Je utiliser cette vue pour la configuration initiale du contact ainsi que l'édition ultérieure.
Dans la proposition de réponse il existe une version manquant
Sans cette mise à jour d'une fuite se produit. Ou au moins selon les Construire et de les Analyser dans Xcode....
La méthode suivante doit retourner NO:
Cela permettra à votre prochaine appelée méthode (peoplePickerNavigationController:shouldContinueAfterSelectingPerson:propriété:identifiant:).