在ABPeoplePickerNavigationController中自定义表格单元格

我花了一些时间寻找这个答案,但无法find它,所以在这里:

我从一个ABPeoplePickerNavigationController开始,当用户点击一个人时,他们将被带到一个ABPersonViewController,他们将能够select电话号码和电子邮件地址。 在完成ABPersonViewController之后,他们将被带回到ABPeoplePickerNavigationController。 很简单的东西。

我想要的是在select电话号码或电子邮件地址后,将细节标签添加到他们在ABPeoplePickerNavigationController中select的表格单元格。 像“select电子邮件和电话号码”或“电话号码select”。

苹果的文档说:

 你不应该需要这些控制器的子类。 预期的方式来修改他们的行为是通过你的代表实现。

提供的委托方法不会处理这个。 有没有什么办法可以做到这一点,而不需要自己的子类? 而且,如果我必须inheritanceABPeoplePickerNavigationController的子类,那么我会覆盖哪个方法来更新detailLabel?

谢谢!

这段代码似乎适用于我,当用户select一个人并添加一个复选标记时,它会抓取单元格。 我猜你也可以用其他方式调整单元格。

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ UIView *view = peoplePicker.topViewController.view; UITableView *tableView = nil; for(UIView *uv in view.subviews) { if([uv isKindOfClass:[UITableView class]]) { tableView = (UITableView*)uv; break; } } if(tableView != nil) { UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]]; if(cell.accessoryType == UITableViewCellAccessoryNone){ cell.accessoryType = UITableViewCellAccessoryCheckmark; } else{ cell.accessoryType = UITableViewCellAccessoryNone; } [cell setSelected:NO animated:YES]; } return NO; } 

我有如何做的想法,我认为这会对你有所帮助,但从来没有像这样实施。 首先,你必须去定制表。 对于该表,您可以提供您地址簿中的所有联系人姓名。 您可以使用http://developer.apple.com/library/mac/#documentation/userexperience/Reference/AddressBook/Classes/ABAddressBook_Class/Reference/Reference.html

只要通过它你可以理解。

你必须使用这些方法。 1) – (NSArray *)的人,你会得到所有人的logging到返回的数组。 每个logging将有唯一的ID,你必须检索它

ABRecord rec = [returnedArray objectAtIndex:0];

NSString * pid = rec.uniqueId

– (NSString *)uniqueId(这是ABRecord属性方法)

一旦你得到它,你可以通过使用recordid /唯一的id退出你想要的数组。