iOS7-ABPersonViewController, modo de edición
addressbook (1)
Puede utilizar ABNewPersonViewController en lugar de ABPersonViewController, abajo está el código:
ABNewPersonViewController *picker = [[[ABNewPersonViewController alloc] init] autorelease];
picker.newPersonViewDelegate = self;
picker.displayedPerson = person;
picker.navigationItem.title=@"edit contact";
[self.navigationController pushViewController:picker animated:YES];
Apple presenta un buen ejemplo completo y pequeño, "QuickContacts" ( developer.apple.com/library/IOs/samplecode/QuickContacts/Introduction/Intro.html ), que describe el uso básico del Marco de la interfaz de usuario de la libreta de direcciones . - El código fuente descargable funciona como se describe (una vez que agrega una persona llamada "Appleseed" a su libreta de direcciones o cambia el nombre de persona en la línea 246 (de QuickContactsViewController.m) a algo que ya existe en su libreta de direcciones).
Pregunta: ¿Cómo podemos modificar la función -(void)showPersonViewController
función de tal manera que el ABPersonViewController "picker"
ya está en modo de edición (con un botón de edición "Done" visible), cuando se abre (después de ser empujado en el navegadorController apilar).
En las versiones de iOS anteriores a "7", era una cuestión directa de simplemente insertar, por ejemplo, picker.editing = YES;
antes de empujar el selector hacia la pila de navegación, para verlo en modo de edición, una vez que se abre (ver código a continuación).
En iOS7, esto ya no funciona.
¿Es esto un error en iOS7, si es así, hay una ABPersonViewController
simple (en lugar de, por ejemplo, ingeniería inversa de la clase ABPersonViewController
)? - ¿O necesita ser codificado de manera diferente, en estos días?
Esperamos sus comentarios.
-(void)showPersonViewController
{
// Search for the person named "Appleseed" in the address book
NSArray *people = (NSArray *)CFBridgingRelease(ABAddressBookCopyPeopleWithName(self.addressBook, CFSTR("Appleseed")));
// Display "Appleseed" information if found in the address book
if ((people != nil) && [people count])
{
ABRecordRef person = (__bridge ABRecordRef)[people objectAtIndex:0];
ABPersonViewController *picker = [[ABPersonViewController alloc] init];
picker.personViewDelegate = self;
picker.displayedPerson = person;
// Allow users to edit the person’s information
picker.allowsEditing = YES;
picker.editing = YES; // in iOS6 this works, in iOS7 it does not
[self.navigationController pushViewController:picker animated:YES];
}
...
...
}