Cocoa touch 如何在不连接通讯簿的情况下使用ABPersonViewController

Cocoa touch 如何在不连接通讯簿的情况下使用ABPersonViewController,cocoa-touch,ios,ios4,Cocoa Touch,Ios,Ios4,设置: 我想了解如何在不从通讯录获取数据的情况下使用ABPersonViewConcoller。我有一个JSON web服务提供一个tableview,我的person对象作为字典存储在一个可变数组中 我的问题: 我一直在搜索,找不到任何关于将personViewController用于您自己的对象的引用。我是否可以初始化一个新的personView,将其分配给我的person对象并按下控制器?或者我最好还是用自己的观点复制苹果的观点 更新: 正如Eric建议的那样,使用ABRecordRef作

设置: 我想了解如何在不从通讯录获取数据的情况下使用ABPersonViewConcoller。我有一个JSON web服务提供一个tableview,我的person对象作为字典存储在一个可变数组中

我的问题: 我一直在搜索,找不到任何关于将personViewController用于您自己的对象的引用。我是否可以初始化一个新的personView,将其分配给我的person对象并按下控制器?或者我最好还是用自己的观点复制苹果的观点

更新: 正如Eric建议的那样,使用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设备的通讯录(以及整个通讯录)相关联,因此我相信,滚动您自己的
UIViewController
会更容易获得您想要的。另外,请注意“个人视图控制器必须与导航控制器一起使用才能正常工作。”因此您(可能)在这方面受到限制


尽管如此(我还没有尝试过),但是显示的person属性似乎是
readwrite
,所以我想如果您的数据以
ABRecordRef
的形式存储在数组中,它可能会起作用

是的,我知道这是可以做到的,我在斯坦福大学和其他大学的iphone应用程序中看到过。将它们添加为ABRecords可能就行了。我试试看。谢谢