AB Person ViewController在取消时删除了联系人

时间:2012-12-14 07:29:26

标签: iphone ios ipad

我正在使用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中的属性不完全相同。

有什么建议吗?

2 个答案:

答案 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)

这对您有用:

Can ABNewPersonViewController be used to edit existing records?

它涵盖了您的确切问题的教程。