所以这是场景,我有一个 SearchController,它显示来自我的应用程序联系人列表的过滤结果,并且也出现在我的地址簿中。
推送 ABPersonViewController 的代码存在于我的 didSelectObject:atIndex 方法中。这是代码:
TableCellClass *selectedCell= (TableCellClass *)[self.tableView cellForRowAtIndexPath:indexPath];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef arrayOfAllPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
ABRecordRef thisPerson = CFArrayGetValueAtIndex(arrayOfAllPeople,selectedCell.contactIndex);
ABPersonViewController *picker = [[ABPersonViewController alloc]init];
picker.personViewDelegate = self;
picker.displayedPerson = thisPerson;
picker.allowsEditing = YES;
[self.navigationController pushViewController:picker animated:YES];
这个代码块在标准的 TTTableViewController 上工作得很好,但不知何故不能在我的 searchController 上工作。
顺便说一下,这是屏幕截图。如您所见,不存在 NavigationController。这是 Three20 的默认设置。带有地址簿图标的单元格是通过点击手势启动 ABPersonViewController 的项目