iOS 6 Cree un contacto nuevo a través de ABPeoplePickerNavigationController

Estoy tratando de seguir la guía de progtwigción de la agenda de direcciones de Apple, y tengo dudas sobre peoplePickerController. La foto de ejemplo del tutorial de Apple tiene el button 'más' en la esquina superior derecha que parece permitirle al usuario agregar nuevo contacto a través de peoplePickerController.

Llamé a ABPeopleNavigationControllerPicker vía

- (void)showPicker { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; } 

Pero hay un button de cancelar en la esquina superior derecha de la pantalla en lugar del button de más. ¿Hay alguna opción para cambiar el button o permitir que el usuario agregue nuevo contacto a través de este controller de vista?

Después de hacer una búsqueda en google durante bastante time, a continuación se encuentra lo que encontré. Así que traté de cambiar el button de barra mediante progtwigción …

 - (void)addPerson { ABNewPersonViewController *newPersonVC = [[ABNewPersonViewController alloc] init]; newPersonVC.newPersonViewDelegate = self; UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:newPersonVC]; [self presentViewController:nc animated:YES completion:nil]; } - (void)showPicker { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; } 

- (void)addPerson { ABNewPersonViewController *newPersonVC = [[ABNewPersonViewController alloc] init]; newPersonVC.newPersonViewDelegate = self; UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:newPersonVC]; [self presentViewController:nc animated:YES completion:nil]; } - (void)showPicker { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; }

Sin embargo, de alguna manera el button de barra todavía se fija como "cancelar" en lugar de "agregar" …

En iOS 7, necesitaba configurar esos botones más adelante …

  - (void)showPicker { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; [picker.topViewController setEdit:YES]; [self performSelector:@selector(setThemBuddons:) withObject:picker afterDelay:0.1]; } -(void)setThemBuddons:(ABPeoplePickerNavigationController*)picker; { picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)]; } 

No importa, ahora funcionó. Parece que tengo que presentar el ViewController antes de anular su button …

 - (void)showPicker { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; [picker.topViewController setEdit:YES]; picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)]; } 

Solo necesitas una pequeña modificación en el método addPerson.

Para mostrar contactos:

– (vacío) showPicker

{

 ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; [self presentViewController:picker animated:YES completion:nil]; [picker.topViewController setEdit:YES]; [self performSelector:@selector(addContact:) withObject:picker afterDelay:0.1]; 

}

– (void) addContact: (ABPeoplePickerNavigationController *) selector;

{

 picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)]; 

}

Con este código, obtendrá un signo más en la esquina superior derecha para agregar los contactos.

Estamos usando @selector para esto.

– (void) addPerson

{

 ABNewPersonViewController *newPersonVC = [[ABNewPersonViewController alloc] init]; newPersonVC.newPersonViewDelegate = self; UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:newPersonVC]; 

// Aquí está el código de la línea que hace el trabajo. Al usar self.presentedViewController podemos // get la pantalla de contacto de agregar, de lo contrario obtendremos el error como jerarquía de vista vacía.

  [self.presentedViewController presentViewController:nc animated:YES completion:nil]; 

}

    Intereting Posts