Estoy casi desesperado porque busco una solución desde hace semanas.iPhone ABPeoplePickerNavigationController - Cómo seleccionar dos entradas individuales de dos propiedades multivalo diferentes de una persona de la libreta de direcciones
El problema es simple:
- A través de la ABPeoplePickerNavigationController (como ModalView), una persona debe ser seleccionado.
- Entonces solo (por ejemplo) las direcciones de Correo deben mostrarse y el usuario debe seleccionar una.
- Después de seleccionar una dirección de correo, solo deben mostrarse los números de teléfono (por ejemplo) y el usuario debe seleccionar uno.
La solución hasta que el tercer aspecto es bien conocido:
- (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;
}
El enfoque correcto parece empujar un Peoplepicker similares Ver en el NavigationController del ModalView, pero no sé cómo.
¡Si alguien tuviera alguna idea, sería genial!
Si desea ver tal comportamiento en acción, puede echar un vistazo a la aplicación de Amazon: si sigue los primeros pasos de un pedido puede seleccionar una dirección de envío exactamente de esta manera: De la lista de contactos -> Seleccionar a Persona -> Seleccionar una dirección -> Seleccionar un número de teléfono. Allí, todo (parece) tener lugar en la vista modal con solo una jerarquía de navegación con un nivel más que en el código estándar que se muestra arriba.
¡Lo siento mucho, todavía no respondí! Su comentario me guió a la solución que era casi exactamente como la de zonble. ¡¡Muchas gracias!! –