0

これは私が試したことです:

-(void) vDisplayPerson:(ABRecordRef)person
{
    ABPersonViewController *picker = [[ABPersonViewController alloc] init] ;
    picker.personViewDelegate = self;
    picker.displayedPerson = person;
    picker.displayedProperties=@[@(kABPersonPhoneProperty),@(kABPersonEmailProperty),@(kABPersonBirthdayProperty),@(kABPersonOrganizationProperty),@(kABPersonJobTitleProperty),@(kABPersonDepartmentProperty),@(kABPersonNoteProperty),@(kABPersonCreationDateProperty)];
    // Allow users to edit the person’s information
    picker.allowsEditing = YES;
    [self.navigationController pushViewController:picker animated:YES];

}

さまざまなものを含むように、displayedProperties をセットアップしたことに注意してください。電話。人。誕生日。ただし、名前と役職のみが表示されます。

人々が連絡先で見るのと同じ種類の情報を表示したいと考えています。iOS6ではできなくなりましたか?

更新: 問題はディスプレイにあるのではなく、なんらかの理由で個人レコード全体に電話番号が含まれていないことが原因ではないかと強く疑っています。これは、連絡先を編集して電話番号を追加し、電話番号が表示されるためです。ただし、更新は「実際の」連絡先には反映されません。プログラムで行った更新が実際の連絡先に反映されません。実際の連絡先の更新がプログラムに表示されません。

CFArrayRef refAllPeople = ABAddressBookCopyArrayOfAllPeople( addressBook ); を使用しています。

ちなみに、これはiPhone 5.1シミュレーターにあります。

4

1 に答える 1

0

ここで重要なのは、ABAddressBookCreate の結果への参照をまだ解放してはならないということです。そのため、プロパティを作成し、@property (nonatomic) ABAddressBookRef addressBook;dealloc で後でのみ解放します (これはプログラムの最後まで呼び出されません)。

これにより、問題が修正されます。

于 2013-03-29T08:50:18.377 に答える