显示searchResultsTableView时隐藏UITableView

时间:2013-02-11 07:06:09

标签: iphone ios objective-c xcode xcode4.2

我有一个UITableView已实施searchDisplayController。我有

tableView.backgroundColor = [UIColor clearColor];

self.searchDisplayController.searchResultsTableview.backgroundColor = [UIColor clearColor];

当我在搜索字段中输入文字时,搜索结果显示正常,但由于结果表格的背景是透明的,我看到tableviewtableview搜索结果表格显示。我想在searchField开始编辑时隐藏tableView。我试过了

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller 
shouldReloadTableForSearchString:(NSString *)searchString
{
    [tableView setHidden:YES];
    [self filterContentForSearchText:searchString 
                               scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
                                      objectAtIndex:[self.searchDisplayController.searchBar
                                                     selectedScopeButtonIndex]]];

    return YES;
}

但它用tableView隐藏了searchBar。如何解决?

3 个答案:

答案 0 :(得分:2)

首先我知道您在searchDisplayController上添加了UITableView

删除它请在查看控制器上添加UISearchDisplayController而不是UITableView,如果您隐藏UITableView,那么UISearchDisplayController也会隐藏因为您在UITableView上添加了UISearchDisplayController。

谢谢:)

答案 1 :(得分:2)

您可以设置tableView的数据源,使其在搜索界面可见时返回0个部分:

- (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView
{
    if (self.searchDisplayController.active && 
        (tableView != self.searchDisplayController.searchResultsTableview))
        return 0; // return 0 for bottom table view if search interface is active
    else
        return <your usual number of sections>
}

然后,您可以[tableView reloadData]隐藏所有内容,而不是隐藏您的表格视图。搜索完成后,再次重新加载表格视图以再次显示内容。

重新加载表视图会重置所有表视图单元格和表格视图的内容偏移量,因此在某些情况下这样做可能不是一个好主意。

或者,您可以尝试遍历所有表格视图的可见单元格并隐藏它们:

for (UITableViewCell *cell in tableView.visibleCells)
{
     cell.hidden = YES;
}

答案 2 :(得分:0)

首先制作桌面插座并将其与桌面连接 然后尝试这行代码

tableView.hidden=TRUE;

它会起作用....