2014-09-19 58 views
2

我有我添加以编程方式的UISearchBar这样的(这是我的viewDidLoad)一个表视图控制器:的UISearchBar时以编程方式添加不`吨调用didSelectRowAtIndexPath方法

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 64)]; 
searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self]; 
searchDisplayController.delegate = self; 
searchDisplayController.searchResultsDataSource = self; 
searchBar.delegate = self; 
[self.tableView.tableHeaderView addSubview:searchBar]; 
[self.tableView.tableHeaderView sizeToFit]; 

我dont`t设置为tableHeaderView因为我对标题有另一种看法(蓝色)。

My Tableview

问题是,当我搜索并点击单元格,方法didSelectRowAtIndexPath方法没有被调用。而且,正如它在我的图片上显示的那样,我需要知道选中的单元格是否添加了复选标记。

回答

1

您还需要指定'self'作为searchResultsDelegate。喜欢这个。

searchDisplayController.searchResultsDelegate = self; 

然后在您的didSelectRowForIndexPath中,您需要区分搜索表格和常规表格。就像这样:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == _searchController.searchResultsTableView) { 
     // user selected a row in your search results table 
    } else { 
     // user selected a row in your main table 
    } 
} 

您还需要进行这种区分(测试searchResultsTableView)在你的其他委托方法,如果有的话,如的tableView didDeselectRowAtIndexPath。

相关问题