Reputation: 33140
-(void) vDisplayPerson:(ABRecordRef)person
{
ABPersonViewController *picker = [[ABPersonViewController alloc] init] ;
picker.personViewDelegate = self;
picker.displayedPerson = person;
picker.displayedProperties=@[@(kABPersonPhoneProperty),@(kABPersonEmailProperty),@(kABPersonBirthdayProperty),@(kABPersonOrganizationProperty),@(kABPersonJobTitleProperty),@(kABPersonDepartmentProperty),@(kABPersonNoteProperty),@(kABPersonCreationDateProperty)];
// Allow users to edit the person’s information
picker.allowsEditing = YES;
picker.allowsActions=YES;
//[picker setValue:[NSNumber numberWithBool:YES] forKey:@"allowsDeletion"];
[self.navigationController pushViewController:picker animated:YES];
}
After [self.navigationController pushViewController:picker animated:YES];
I got
2013-10-08 09:29:37.499 Recent Contact[5804:a0b] *** Assertion failure in +[CNContact propertyForPropertyID:], /SourceCache/AddressBookUI_Sim/AddressBookUI-1553/Framework/Sources/CNUIContact/CNContact.m:855
I do not even know what class CNContact is or why it's wrong.
Upvotes: 0
Views: 266
Reputation: 1541
I think there are wrong property you are trying to use. Instead try this:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <AddressBookUI/AddressBookUI.h>
@interface PersonViewController : UIViewController <ABPersonViewControllerDelegate>
{
ABPersonViewController *personController;
}
- (void) displayContactInfo: (ABRecordRef)person;
@end
delegate's implementation (PersonViewController.m):
#import "PersonViewController.h"
@implementation PersonViewController
- (void) viewDidLoad
{
}
- (void) viewDidUnload
{
[personController release];
}
- (void) displayContactInfo: (ABRecordRef)person
{
personController = [[ABPersonViewController alloc] init];
[personController setDisplayedPerson:person];
[personController setPersonViewDelegate:self];
[personController setAllowsEditing:NO];
personController.addressBook = ABAddressBookCreate();
personController.displayedProperties = [NSArray arrayWithObjects:
[NSNumber numberWithInt:kABPersonPhoneProperty],
nil];
[self setView:personController.view];
}
- (BOOL) personViewController:(ABPersonViewController*)personView shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue
{
// This is where you pass the selected contact property elsewhere in your program
[[self navigationController] dismissModalViewControllerAnimated:YES];
return NO;
}
@end
Upvotes: 1