0

Right now i am using the <AddressBookUI/AddressBookUI.h>

it is working fine, it is opening the address view controller, after tapping in a contact it goes to the detail view where I can click on any property to select and get the information.

below is the code i am using right now:

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
[self peoplePickerNavigationController:peoplePicker shouldContinueAfterSelectingPerson:person property:property identifier:identifier]; }

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {
 [picker dismissModalViewControllerAnimated:YES]; }

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
  shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
ABMutableMultiValueRef multi = ABRecordCopyValue(person, property);
CFStringRef phone1 = ABMultiValueCopyValueAtIndex(multi, identifier);
NSLog(@"phone %@", (__bridge NSString *)phone1);
CFRelease(phone1);
ABMultiValueRef fnameProperty = ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMultiValueRef lnameProperty = ABRecordCopyValue(person, kABPersonLastNameProperty);

ABMultiValueRef phoneProperty = ABRecordCopyValue(person, kABPersonPhoneProperty);
ABMultiValueRef emailProperty = ABRecordCopyValue(person, kABPersonEmailProperty);

NSArray *emailArray = (__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(emailProperty);
NSArray *phoneArray = (__bridge NSArray *)ABMultiValueCopyArrayOfAllValues(phoneProperty);

NSString *name,*phone,*email;
phone = [[NSString alloc]init];
email = [[NSString alloc]init];
name = [[NSString alloc]init];
if (fnameProperty != nil) {
    name = [NSString stringWithFormat:@"%@", fnameProperty];
}
if (lnameProperty != nil) {
    name = [name stringByAppendingString:[NSString stringWithFormat:@" %@", lnameProperty]];
}

if ([phoneArray count] > 0) {
    if ([phoneArray count] > 1) {
        for (int i = 0; i < [phoneArray count]; i++) {
            phone = [phone stringByAppendingString:[NSString stringWithFormat:@"%@,", [phoneArray objectAtIndex:i]]];
        }
    }else {
        phone = [NSString stringWithFormat:@"%@", [phoneArray objectAtIndex:0]];
    }
}
if ([emailArray count] > 0) {
    if ([emailArray count] > 1) {
        for (int i = 0; i < [emailArray count]; i++) {
            email = [email stringByAppendingString:[NSString stringWithFormat:@"%@\n", [emailArray objectAtIndex:i]]];
        }
    }else {
        email = [NSString stringWithFormat:@"%@", [emailArray objectAtIndex:0]];
    }
}

//----setting txt field values
NSArray *f_name = [name componentsSeparatedByString:@" "];
if(f_name.count>1)
{
    txtFirstname.text = [f_name objectAtIndex:0];
    txtLastname.text = [f_name objectAtIndex:1];
}else{
    txtFirstname.text = [f_name objectAtIndex:0];
}

NSArray *only_1_no = [phone componentsSeparatedByString:@","];
NSString *str = [only_1_no objectAtIndex:identifier];
NSCharacterSet *unwantedStr = [NSCharacterSet characterSetWithCharactersInString:@"+() -"];
str = [[str componentsSeparatedByCharactersInSet: unwantedStr] componentsJoinedByString: @""];
NSArray *ar = [email componentsSeparatedByString:@"\n"];
 NSMutableString *abcd = [[NSMutableString alloc]init];
for (int i = 0; i<str.length; i++)
{
    NSString *abc = [NSString stringWithFormat:@"%C",[phone characterAtIndex:i]];
    if(i==0){
        abcd =[NSMutableString stringWithFormat:@"%@",abc];
    }else{
        abcd = [NSMutableString stringWithFormat:@"%@%@",abcd,abc];
    }
    [self showmaskonnumber:abcd];
}

txtPhoneno.text = str;
txtEmail.text = [ar objectAtIndex:0];


ABPeoplePickerNavigationController *peoplePicker1 = (ABPeoplePickerNavigationController *)peoplePicker.navigationController;
[peoplePicker1 dismissModalViewControllerAnimated:YES];
[txtEmail becomeFirstResponder];
       return YES;

}

my question is: Which changes should I make to this code so when I select a contact on the address list view, the selection returns the contact and all its information without showing its details?

4

1 回答 1

0

I solved my issue by using this delegate method

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person;
{ [self selectedPerson:person]; }
于 2015-09-24T10:50:49.057 回答