1. 程式人生 > >AddressBookUI.Framwork應用之ABPersonViewController, ABUnknownPersonViewController,ABNewPersonViewContro

AddressBookUI.Framwork應用之ABPersonViewController, ABUnknownPersonViewController,ABNewPersonViewContro

設定委託 ABPersonViewControllerDelegate,personVc.personViewDelegate=self;

//顯示和編輯一個聯絡人資訊

ABPersonViewController *personVc=[[ABPersonViewControlleralloc]init];

//把聯絡人資訊作為導航欄的根檢視,才可以顯示編輯按鈕和完成按鈕,返回按鈕

UINavigationController *nav=[[UINavigationControlleralloc]initWithRootViewController:personVc];

    ABRecordRef

person=ABPersonCreate();

//CFString=CFSTR("")類似NSString [email protected]"";直接賦值

ABRecordSetValue(person, kABPersonFirstNameProperty, CFSTR("jun"), NULL);

ABRecordSetValue(person, kABPersonLastNameProperty, CFSTR("ye"), NULL);

    personVc.personViewDelegate=self;

    personVc.displayedPerson

=person;

    CFRelease(person);

    personVc.allowsEditing=YES;

委託方法:

-(BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier

{

returnNO ;//不為預設操作

}


//新增新聯絡人到通訊錄,一般用於通訊錄外面的應用,比如說點選某個按鈕,直接進入聯絡人編輯,然後新增到通訊錄

ABUnknownPersonViewController *unknown=[[ABUnknownPersonViewControlleralloc]init];

    unknown.displayedPerson=person;

    unknown.allowsAddingToAddressBook=YES;//允許新增


 //委託方法

-(BOOL)unknownPersonViewController:(ABUnknownPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier

{

return NO;

}


//新建聯絡人,允許使用者填入一個新聯絡人的所有屬性,一般是通訊錄裡面的新建

ABNewPersonViewController *new=[[ABNewPersonViewControlleralloc]init];

    new.newPersonViewDelegate=self;

//委託方法

-(void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person

{

//用於編輯新聯絡人後做的事件,比如說模態退出,比如說不儲存聯絡人到通訊錄

    if (person!=NULL) {

ABAddressBookRef adbk=ABAddressBookCreate();

//從資料庫中刪除新加的聯絡人

        ABAddressBookRemoveRecord(adbk, person, NULL);

CFStringRef name=ABRecordCopyCompositeName(person);

NSLog(@"name%@",name);//對新加的聯絡人做處理,不一定要儲存到通訊錄資料庫

        CFRelease(name);

        CFRelease(adbk);

    }

}