ViewController上的搜索栏和搜索显示控制器

时间:2014-03-11 20:46:26

标签: ios objective-c uitableview uisearchbar

我有一个视图控制器,上面有两个按钮,我希望当用户按下按钮时 - 搜索栏出现,他可以写一些文字,在搜索显示器上他可以看到搜索结果。这个问题让我发疯,在我只使用tableViews之前,以及在数据源方法中检查

if (tableView == self.searchDisplayController.searchResultsTableView)
    {
        // searching result
    }
    else
    {
       //just tableView
    }

我如何理解searchDisplayController和tableView - 是separeted vc&s,并且对于搜索我不需要有一个tableView。但我无法实现它,我尝试在网络上搜索这个问题,但是无法找到我需要的东西。如果有关于此问题的任何教程或示例代码?提前致谢

1 个答案:

答案 0 :(得分:0)

我认为最好的理解方法是在ViewController中有两个UITableView。一个是您的正常UITableView,另一个是searchDisplayController.searchResultsTableView。当您处于搜索模式时,正常的UITableView将被停用,另一个被激活。由于两者都具有相同的Datasource和Delegate(在VC中),如果调用TableView是一个或另一个并返回正确的结果,则需要检入所有Delegate-和Datasource-方法。例如,在numberOfRowsInSection中,您可能需要返回100作为完整数组的计数,但只有20作为已过滤数组的计数。

像这样:

- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    if (aTableView == self.tableView) {
        return [self.contentArray count];
    } else {
        return [self.searchResultArray count];
    }
}

其他方法相同。