我正在使用ABNewPersonViewController
创建一个人。到目前为止一切正常。我确实设置了多值属性以及单个值。点击“添加”后,可以在地址簿中找到该联系人。
但编辑此联系人时出现问题。将联系人添加到地址簿后,我保存了addressbookID
,以便我能够确认联系人是否仍保存在AB中。
因此,如果用户想要再次导出联系人,我不会创建新的ABPersonRecordRef
,而是使用我之前保存的ID标识的现有联系人:
ABRecordID recordId = [aContact.addressBookRecordId intValue];
ABRecordRef personRecord = nil;
if(recordId != 0) {
personRecord = ABAddressBookGetPersonWithRecordID(addressBook, recordId);
if(personRecord) {
return personRecord;
} else {
personRecord = ABPersonCreate();
}
} else {
personRecord = ABPersonCreate();
}
//set properties etc.
现在的问题是,这只是第一次运作。如果用户第二次在ABNewPersonViewController
中显示此人并点击取消,则该记录将在地址簿中删除。虽然以前保存得很好。
我尝试使用ABUnknownPersonViewController
,但问题是,似乎recordRef上的属性det与ABNewPersonViewController
中的属性不完全相同。
有什么建议吗?
答案 0 :(得分:1)
虽然这个帖子很老,但它可能对其他人有帮助。尝试覆盖取消事件,如下所示。它对我有用。
- (void)showNewPersonViewController:(ABRecordRef)person
{
//show new Person view controller
ABNewPersonViewController *vcNewPerson = [[ABNewPersonViewController alloc] init];
vcNewPerson.newPersonViewDelegate = self;
vcNewPerson.displayedPerson = person;
vcNewPerson.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(onNewPersonCancelClick)];
[self.navigationController pushViewController:vcNewPerson animated:YES];
[vcNewPerson release];
}
- (void)onNewPersonCancelClick
{
[self dismissViewControllerAnimated:YES completion:nil];
}
答案 1 :(得分:0)