0

各セルの左側にアクセサリ ビューとデータ (テキスト) の異なる画像を含むテーブル ビュー セルに取り組んでいます。最初は、すべてのセルが関連するデータと画像で占められています。新しいアレイ。たとえば、電車、バス、飛行機の画像とそれぞれのテキストを含むテーブルビューの行がありますが、バスを検索すると、テキストは問題なく表示されますが、イメージビューには無関係な画像が表示されます(電車の画像など)。上記の要件を達成するためのロジックは何でしょうか。次のコードを使用してセルを構成しています

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath 
{
    btnImage = [[UIButton buttonWithType:UIButtonTypeCustom]retain];
    btnImage.frame = CGRectMake(688, 0, 80, 80);
    [btnImage setBackgroundImage:[arrImages objectAtIndex:indexPath.row] forState:UIControlStateNormal];
    [btnImage addTarget:nil action:@selector(DishImageClicked:) forControlEvents:UIControlEventTouchUpInside];
    [cell addSubview:btnImage];
    btnImage.tag = indexPath.row;
    NSLog(@"image clicked at index :%i",btnImage.tag);

}



// Customize the appearance of table view cells.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *strCellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strCellIdentifier];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] 
                 initWithStyle:UITableViewCellStyleDefault 
                 reuseIdentifier:strCellIdentifier] autorelease];

        //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    // assign text for the table view 
    if (tableView == self.searchDisplayController.searchResultsTableView)
    {

        cell.textLabel.text = [arrSearhResults objectAtIndex:indexPath.row];
        cell.textLabel.font = [UIFont boldSystemFontOfSize:14];

        [self configureCell:cell atIndexPath:indexPath];

    }

    else      
    {
        // add image button 
        [self configureCell:cell atIndexPath:indexPath];
        cell.textLabel.text = [self.arrAllItems objectAtIndex:indexPath.row];
        cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
             }
    return cell;
}
4

1 に答える 1

1

これは、セルが再利用されるため、条件if (tableView == self.searchDisplayController.searchResultsTableView)が満たされたときに内容をクリアする必要があるためです。

セル内の画像ビューまたはボタンを参照できる場合は、画像をクリアするだけです。

于 2012-10-31T11:12:19.460 に答える