2010-11-17 63 views
1

设置: 我正在寻找使用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]; 

希望这有助于他人。

回答

2

ABPersonViewController绑定到iOS设备的AddressBook(整个Address Book UI Framework),所以我相信它会更容易滚动自己的UIViewController得到你想要的。此外,the docs请注意,“人员视图控制器必须与导航控制器一起使用才能正常运行。”所以你(可能)在那里受到限制。

不过(我还没有尝试过),但它确实出现了displayedPerson属性为readwrite,所以我想,如果您的数据存储阵列中作为一个ABRecordRef它可能工作。

+0

是的我知道它可以做到,我在斯坦福大学和其他大学的iPhone应用程序中看到它。将它们添加为ABRecords可能会正常工作。我会尽力去看看。谢谢! – h3r2on 2010-11-19 14:30:21

相关问题