如何在不连接到AddressBook的情况下使用ABPersonViewController
问题描述:
设置: 我正在寻找使用ABPersonViewContoller而不从AddressBook获取数据的见解。我有一个JSON web服务,它提供了一个tableview,我有我的个人对象存储在一个mutableArray作为字典。如何在不连接到AddressBook的情况下使用ABPersonViewController
我的问题: 我一直在寻找和找不到任何参考使用personViewController与你自己的对象。我可以初始化一个新的人物视图为其分配我的人物并推送控制器?或者我会更好地摆脱我自己的观点来复制苹果吗?
更新: 正如埃里克建议使用ABRecordRef作为我的对象,它实际上工作。这里是一个代码示例。
// get index and set person object
int personIndex = [indexPath indexAtPosition: [indexPath length] - 1];
ABRecordRef person = ABPersonCreate();
ABRecordSetValue(person, kABPersonFirstNameProperty, [[personList objectAtIndex: personIndex] objectForKey: @"firstName"], nil);
ABRecordSetValue(person, kABPersonLastNameProperty, [[personList objectAtIndex:personIndex] objectForKey:@"lastName"], nil);
// initialize a personviewController
ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
personViewController.personViewDelegate = self;
personViewController.displayedPerson = person;
personViewController.allowsEditing = NO;
// push to view controller
[[self navigationController] pushViewController:personViewController animated:YES];
[personViewController release];
希望这有助于他人。
答
该ABPersonViewController
绑定到iOS设备的AddressBook(整个Address Book UI Framework),所以我相信它会更容易滚动自己的UIViewController
得到你想要的。此外,the docs请注意,“人员视图控制器必须与导航控制器一起使用才能正常运行。”所以你(可能)在那里受到限制。
不过(我还没有尝试过),但它确实出现了displayedPerson
属性为readwrite
,所以我想,如果您的数据存储阵列中作为一个ABRecordRef
它可能工作。
是的我知道它可以做到,我在斯坦福大学和其他大学的iPhone应用程序中看到它。将它们添加为ABRecords可能会正常工作。我会尽力去看看。谢谢! – h3r2on 2010-11-19 14:30:21