4

这真的让我很不舒服。我看到很多关于将 UISearchBar 放在 UITableView 顶行的信息——但我将 UISearchBar 放在屏幕顶部的工具栏中(在 iPad 上)。我找不到任何关于如何在 iPad 上处理UISearchBarUISearchDisplayController使用 a的信息。任何有关使用 a 的UIPopoverController更多信息将不胜感激。请帮助解决这个问题,因为我无能为力。UISearchDisplayControllerUIPopoverController

使用 IB,我在 iPad 上的 IUView 上放置了一个工具栏。我添加了以下内容:(Search Bar不是 Search Bar and Search Display到工具栏。我将选项设置如下:显示取消按钮、显示范围栏、范围按钮标题为:“Title1”和“Title2”(选中 Title2 的单选按钮)。不透明、清除上下文和自动调整大小被选中。我将代表连接Search Bar到“文件所有者”并将其链接到 IBOutlet theSearchBar

在我的viewWillAppear我有以下内容:

    //Just in case:
    [theSearchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];
    //Just in case (again):
    [theSearchBar setShowsScopeBar:YES];
    //doesn't seem to do anything:
    //[theSearchBar sizeToFit]; 

    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:theSearchBar contentsController:self];
    [self setSearchDisplayController:searchDisplayController];
    [searchDisplayController setDelegate:self];
    [searchDisplayController setSearchResultsDataSource:self];
    //again--does not seem to do anything..but people have suggested it:
    [theSearchBar sizeToFit]; 

好吧,到目前为止,我想,太好了。因此,我将 File's Owner.m文件作为代表:UISearchBarDelegate, UISearchDisplayDelegate.

我的问题:我还没有实现进行搜索所需的代表,但仍然......当我点击搜索字段时,我不应该看到scopeBar搜索字段旁边的 吗?只是为了让你知道我确实看到了我输入的字符的日志,所以代表正在工作。

这是我用来检查 IB 是否真的将 Scope Bar (UISegementedControl) 放在搜索栏中的例程:

for (UIView *v in theSearchBar.subviews) 
{
    if ([v isMemberOfClass:[UISegmentedControl class]]) 
    {             
        // You've got the segmented control!                 
        UISegmentedControl *scope = (UISegmentedControl *)v;
        // Do your thing here...
        NSLog(@"Found Scope: '%@'\n",scope);
        NSLog(@"Scope Segments: '%d'\n",[v numberOfSegments]);
    }
} 

由此可见:

[30013:207] Found Scope: '<UISegmentedControl: 0x68a06b0; frame = (0 0; 200 44); opaque = NO; layer = <CALayer: 0x68a0600>>'
[30013:207] Scope Segments: '2'

所以,我知道有两个部分。我也知道他们没有出现......我做错了什么?

为什么没有出现范围栏?当我在搜索中键入第一个字符时,结果 UIPopoverController 出现标题“结果”和“未找到结果”(当然)......但没有范围栏。(并不是说我期望“未找到任何结果”之外的任何内容。

我想知道范围栏应该出现哪里......在 UIPopover 的 titleView 中?在搜索区域右侧的工具栏中?在哪里?

4

2 回答 2

0
[self.searchDisplayController searchBar] setScopeButtonTitles:[NSArray arrayWithObjects:@"Near Me",@"Everywhere",nil]];

这可能会有所帮助。

于 2012-02-06T07:49:21.417 回答
0

UISearchBar 在嵌入 UIToolbar 时不显示其范围,即使在 iOS 7 中也是如此。

您必须构建自己的 UISegment 并将其添加到搜索结果的表格视图中,或者构建您自己的视图来保存将显示范围的 UISearchBar。

于 2014-01-17T10:24:03.470 回答