这是我的故事板视图及其连接:
http://i.stack.imgur.com/uD0pT.png http://i.stack.imgur.com/FNnVa.png
在我的特定情况下,我有searchResultsTableView从第一个外部Web服务获取数据,self.tableview从另一个Web服务获取数据。
我添加了一些明确的代码:
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { ... }
这特别是获得了第一个Web服务 返回NO
并且有一个:
[self.searchDisplayController.searchResultsTableView reloadData];
在提取完成时重新加载数据。
然后我们有:
-(void) doSearch:(NSString*) keyword inStore:(NSInteger) store getPage: (int) pagenum {..}
获取第二个Web服务并将结果设置为名为'fetchedItems'的数组
现在,要管理这两个表,我必须编写这个方法:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
NSLog(@"Avvio ricerca..");
// Do the search...
NSInteger store = [self buttonSelected];
[self doSearch:searchBar.text inStore:store getPage:1];
[self.searchDisplayController setActive:NO];
}
我试过没有'setActive:NO'但是self.searchDisplayController.searchTableView仍然显示,我不能用“doSearch”结果看到“underneath”self.tableView
确定。现在我有这个方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"foundCell";
static NSString *suggestionCellIdentifier = @"suggestionCell";
UITableViewCell *cell;
if (tableView == self.searchDisplayController.searchResultsTableView) {
// HERE I AM WITH SEARCHDISPLAYCONTROLLER
cell = [self.tableView dequeueReusableCellWithIdentifier:suggestionCellIdentifier];
cell.textLabel.text = [self.suggestions objectAtIndex:indexPath.row];
} else {
// HERE I AM WITH SELF.TABLEVIEW
}
return cell;
}
现在可行,但有问题! 当我点击带有结果的tableview(用self.tableview表示)时,我无法用方法来点击 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {...}
但我在编辑模式下重新打开了uisearchdisplaycontroller(因此用户可以在搜索栏内点击)
我哪里错了?
答案 0 :(得分:0)
固定!使用显示时SearchBarI NavigationBar = YES 我们需要在故事板中搜索栏为OUTview!