gpt4 book ai didi

iphone - 为什么 ABPersonViewController 除了名称之外不显示任何属性?

转载 作者:行者123 更新时间:2023-12-01 19:28:27 26 4
gpt4 key购买 nike

出于某种原因,ABPersonViewController不愿意显示除名称之外的任何属性,无论设置了哪些属性来显示。

我无法使用 AddressBookUI Controller 让用户选择要显示的联系人,因为我的 UI 有自定义要求,否则我会走那条路(就像 Apple 在他们的示例项目中所做的那样。)

这是不起作用的代码——我错过了什么吗?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// ABContact is of my own creation
ABContact *contact = [self contactAtIndexPath: indexPath];
ABPersonViewController *viewController = [[ABPersonViewController alloc] init];

// This returns a valid ABRecordRef, as indicated by the fact that the
// controller does display the name of this contact when it is loaded
viewController.displayedPerson = contact.record;

// Copied directly from Apple’s QuickContacts sample project
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil];

viewController.displayedProperties = displayedItems;

[self.navigationController pushViewController: viewController animated: YES];
[viewController release];
}

最佳答案

ABContact 来自 Erica Sadun 的 ObjC 包装器 (ABContactsHelper),对吧?

我也在使用它,发现由于某种原因,Apple 的 ABPersonViewController 以某种方式将提供的 ABRecordRef 视为 contact.record 与直接使用 C 函数不同。
因此:

ABContact *person = ...;
ABPersonViewController *personVC = ...;
personVC.displayedPerson = person.record;

几乎不会将任何内容加载到 Controller 中。有时名字/姓氏,有时甚至不是。但是,如果您这样做:
ABContact *person = ...;
ABPersonViewController *personVC = ...;
ABAddressBookRef addressBook = ABAddressBookCreate();
personVC.displayedPerson = ABAddressBookGetPersonWithRecordID(addressBook, person.recordID);

然后它将加载所有内容。

先前的答案说,常量需要 ABAddressBookCreate 才能具有值,但这已经在 [ABContactsHelper addressBook] 调用中完成(我在代码中调用的第一件事)。这真是令人费解,它在哪里迷路了。但前一个确实有效,始终如一。

关于iphone - 为什么 ABPersonViewController 除了名称之外不显示任何属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5013349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com