0

我将 UISeachDisplayController 与 UITableView 一起使用。它是在 UITableViewController 的 viewDidLoad 方法中以编程方式设置的:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self loadProjectsAndTitles];
    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 600, 44)];
    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar
                                                                contentsController:self];
    searchDisplayController.delegate = self;
    searchDisplayController.searchResultsDataSource = self;
    searchDisplayController.searchResultsTableView.allowsSelection = TRUE;
    self.tableView.tableHeaderView = searchBar;
}

一切都工作得很好,除了当我在使用 UISearchBar 时单击一行时,- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath虽然没有使用 UISearch 时它被很好地调用,但没有调用该方法。我的问题是这是正常行为还是选择方法应该有效?如果它应该起作用,有什么建议为什么它可能不起作用?

4

1 回答 1

1

我想你忘了设置

searchDisplayController.searchResultsDelegate = self;

searchResultsDelegate是显示搜索结果的表视图的didSelectRowAtIndexPath委托,是表视图委托方法之一。

于 2013-05-04T21:34:59.407 回答