1

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;
}
4

2 に答える 2

4

何が問題だったのかがわかりました。searchDisplayControllerは独自のテーブルビューを返すため、タグ付けされたセルはこのビューに存在しません。カスタムセルを使用するには、次の行を置き換える必要があります。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

と:

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
于 2012-05-05T12:18:54.880 に答える
3

たぶん、ラベルはセルのサブビューですcontentView。試す

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

また、searchDisplayController.searchResultsTableViewが正しく設定されているかどうかを確認してください。細胞が戻ってこないようですね。

于 2012-05-04T21:25:14.587 に答える