我正在我的应用程序和 iPhone 的地址簿之间进行一些集成。这是我的程序流程。
- 用户想要导入联系人
- 应用程序向用户呈现“ABPeoplePickerNavigationController”。
- 用户选择他们想要的联系人:
- 委托方法被称为:
这是代码:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
self.selectedContact = person;
[self showNewContactViewThroughController:peoplePicker withRecord:person];
NSLog(@"should continue after selecting");
return NO;
}
5:在- (void)showNewContactViewThroughController:withRecord:
我们创建 AbNewPersonViewController。
`ABNewPersonViewController *newController = [[ABNewPersonViewController alloc] init];`
`newController.displayedPerson = person;`
`newController.newPersonViewDelegate = self;`
然后推它。
6:用户点击“取消”退出 ABNewPersonViewController 视图。
7:检查联系人应用程序,他们在步骤 3 中选择的联系人已消失。噗,消失,删除,删除。
为了解决这个问题,我保存了 ABRecordRef(到实例变量“selectedContact”)。然后,在- (void)newPersonViewController:didCompleteWithNewPerson:
我有:
if (person) {
//do stuff with the person
else {
///
/// This means they canceled, so we need to save the old person back
///
if (self.selectedContact) {
ABAddressBookRef addressBook = ABAddressBookCreate();
CFErrorRef error = NULL;
ABAddressBookAddRecord(addressBook, self.selectedContact, &error);
if (error != NULL) {
NSLog(@"Error Adding Record: %@", error);
}
ABAddressBookSave(addressBook, &error);
if (error != NULL) {
NSLog(@"AccountDetailTableViewController.newPersonViewController() The old contact was not saved successfully. %@", error);
}
self.selectedContact = nil;
}
}
但是,这似乎没有任何作用。代码已执行,但“旧联系人”self.selectedContact 未保存到地址簿。所以,我的联系人仍然在消失。我究竟做错了什么?看起来好像您在 ABNewPersonViewController 中点击了“取消”,它会“删除”它从通讯簿中提供的数据?所以我给它的人然后死了?任何帮助,将不胜感激!