0

私は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

助言がありますか?

4

2 に答える 2

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];
}
于 2013-01-30T06:09:58.170 に答える
0

これはあなたに役立ちます:

ABNewPersonViewController を使用して既存のレコードを編集できますか?

正確な問題を含むチュートリアルをカバーしています。

于 2012-12-14T08:17:51.120 に答える