2

我想调出用户的通讯录并使用新的 PeoplePicker 控制器对结果进行切片以仅显示与特定术语匹配的结果。我看到 UIPeoplePickerNavigationController 嵌入了一个搜索栏和搜索视图。看起来很标准的东西,我以前从未使用过它。

我如何以编程方式从刚刚以模态方式呈现 PeoplePicker 的 UIViewController 子类获得该信息?

这是我到目前为止所尝试的。不用说,它不起作用。

ABPeoplePickerNavigationController *pick = [[ABPeoplePickerNavigationController alloc] init];
pick.searchDisplayController.searchBar.text = @"jim";
[self presentModalViewController:pick animated:YES];
[pick release];

编辑:更清楚地说,我想调出一个 ABPeoplePicker,但已经“中间搜索”了一个来自应用程序其他地方的搜索词。如果用户想取消该搜索并运行自己的搜索,那很好,但我想先用我自己的术语预加载 searchviewcontroller。

4

2 回答 2

1

如果有人仍然对此感到疑惑,我已经通过在演示完成块中操纵 searchBar 的第一响应者状态来找到解决方案:

[self presentViewController:pick animated:YES completion:^{
    UISearchBar *bar = pick.visibleViewController.searchDisplayController.searchBar;
    [bar becomeFirstResponder];
    [bar setText:@"jim"];
    [bar resignFirstResponder];
}];

在拉出搜索结果之前会有短暂的延迟,但这是我发现在 ABPeoplePickerNavigationController 中完成编程搜索的最佳方式

于 2013-12-17T21:50:00.237 回答
0

检查您是否已声明 ABPeoplePickerNavigationControllerDelegate。

然后运行您的应用程序。我希望它会帮助你

于 2010-07-27T10:44:11.327 回答