显示 searchResultsTableView 时隐藏 UITableView

Posted

技术标签:

【中文标题】显示 searchResultsTableView 时隐藏 UITableView【英文标题】:Hide UITableView when searchResultsTableView displayed 【发布时间】:2013-02-11 07:06:09 【问题描述】:

我有一个 UITableView 并实现了一个 searchDisplayController。我有

tableView.backgroundColor = [UIColor clearColor];

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

当我在搜索字段中输入文本时,搜索结果显示正常,但是由于结果表的背景是透明的,我看到了我的tableview 并且在tableview 上显示了搜索结果表。我想在 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。如何解决?

【问题讨论】:

你在哪里添加 UISearchBar???在 UITableView 上??? 是的,我拖了一个 UISearchDisplayController 并将搜索栏添加到 tableView 非常感谢,它成功了。 ***.com/questions/6947858/… 【参考方案1】:

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

请删除它并将您的 UISearchDisplayController 添加到您的 View Controller 而不是 UITableView,因为如果您隐藏了 UITableView,那么 UISearchDisplayController 也会隐藏,因为您在 UITableView 上添加了 UISearchDisplayController .

谢谢:)

【讨论】:

【参考方案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;

【讨论】:

我很早就想到了这个过程,但我需要一个更简单的解决方案。感谢您的回复。【参考方案3】:

首先制作表格插座并将其与表格连接 然后试试这行代码

tableView.hidden=TRUE;

它会起作用的......

【讨论】:

tableView 已经是一个插座并且已连接。我正在做与您发布的相同的事情。

以上是关于显示 searchResultsTableView 时隐藏 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

如何使searchResultsTableView使用自定义单元格而不是默认单元格[重复]

iOS 搜索栏不显示结果

如何从 xib 文件 uiview 到情节提要 ViewController

NSFetchedResultsController 导致 iPhone 3G 死机

主 UITableView 在搜索结果 TableView 状态栏中可见

Mac外接显示器的显示模式及设置