搜索栏工作正常但未显示任何结果

时间:2013-04-06 21:02:49

标签: ios uisearchbar is-empty

我在我的项目中添加了一个搜索栏,效果很好。您可以搜索对象(表格视图),关系也可以。但搜索显示不会显示结果名称。

例如:我没有以“x”>>>开头的对象所以没有结果(这是正确的):

但是一个对象以“b”开头,但是虽然我可以点击它并且它正确地向我显示下一个视图(关系),但是没有显示该名称:

这可能是由于我的代码造成的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if (tableView == self.searchDisplayController.searchResultsTableView) {

    Car *search = [searchResults objectAtIndex:indexPath.row];
    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = search.name;

我不知道为什么这不起作用,这对我来说似乎很奇怪。 如果有人可以帮助我,那就太棒了。

更新:完整方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"CarCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

if (tableView == self.searchDisplayController.searchResultsTableView) {

     Car *search = [searchResults objectAtIndex:indexPath.row];
    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = search.name;

} else {
    Car *car = [cars objectAtIndex:indexPath.row];
    UIImageView *carImageView = (UIImageView *)[cell viewWithTag:100];
    carImageView.image = [UIImage imageNamed:car.thumbnail];

    UILabel *carNameLabel = (UILabel *)[cell viewWithTag:101];
    carNameLabel.text = car.name;

    UILabel *carSpeedLabel = (UILabel *)[cell viewWithTag:102];
    carSpeedLabel.text = car.carSpeed;

}

return cell;

}

2 个答案:

答案 0 :(得分:0)

如果更新的代码是整个tableView:cellForRowAtIndexPath:方法,那么您没有将carImageViewcarNameLabelcarSpeedLabel视图添加到您的单元格。

初始化新单元格时,需要添加和配置这些子视图,包括相应的标记。您应该将视图添加到cell.contentView,然后使用[cell.contentView viewWithTag:X]来检索它们。

答案 1 :(得分:0)

您尝试按UILabel值设置tag,但您正在使用股票UITableViewCell。请尝试以下方法:

if (tableView == self.searchDisplayController.searchResultsTableView) {
    Car *search = [searchResults objectAtIndex:indexPath.row];
    cell.textLabel.text = search.name;
} else {
    Car *car = [cars objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:car.thumbnail];

    cell.textLabel.text = car.name;
    cell.detailTextLabel.text = car.carSpeed;
}

如果您不想使用普通UIView内置的标准UITableViewCell,则必须创建并添加自定义视图(并设置其tag在您创建新单元格的块中。