viewWithTag不会在搜索中返回对象

时间:2012-05-04 21:21:09

标签: iphone xcode ios5

我有tableview个自定义单元格和搜索栏。我在单元格上标记了标签,因为我在该单元格上也有imageView

表格显示标签和图像,但在搜索中,方法viewWithTag似乎没有找到标记的标签。只要我在搜索栏中输入一个字符,视图就会清除,就好像没有找到带有标签100的单元格一样。 这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

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

        iKl_Stretch *stretchpb  = [self.filteredStretchList objectAtIndex:indexPath.row];     
        UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
        nameLabel.text = stretchpb.name;
        return cell;

    } else {

        iKl_Stretch *stretchpb  = [self.categoryStretchList objectAtIndex:indexPath.row];
        UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
        nameLabel.text = stretchpb.name;
    }
    return cell;
}

2 个答案:

答案 0 :(得分:4)

我发现了什么问题: searchDisplayController返回自己的tableview,因此我的标记单元格在此视图中不存在。 要使用自定义单元格,必须替换该行:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

使用:

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

答案 1 :(得分:3)

也许标签是单元格contentView的子视图。尝试

UILabel *nameLabel = (UILabel *)[cell.contentView viewWithTag:100];

另外,请检查您的searchDisplayController.searchResultsTableView是否已正确设置。听起来好像你没有回来了。