2012-03-21 2 views
0

У меня есть таблицаView с пользовательской ячейкой, моя первая ячейка отличается от других ячеек. (он содержит небольшое изображение и метку). Я делаю так:UITableView и пользовательские ячейки

#

pragma mark - tableView data source methods 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 


    SuggestionCarteCell *cell = (SuggestionCarteCell *)[tableView dequeueReusableCellWithIdentifier:@"carteCell"]; 
    if (cell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SuggestionCarteCell" owner:nil options:nil] ; 
     cell = [nib objectAtIndex:0]; 
    } 

    if (indexPath.row == 0) { 
     // crer l'image 

     NSLog(@" je suis dans row 0"); 
     UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(21, 9, 13, 26)]; 
     imageView.image = [UIImage imageNamed:@"iconeLocation"]; 
     [cell addSubview:imageView]; 
     cell.labelRegion.frame = CGRectMake(21+13+10, cell.labelRegion.frame.origin.y,cell.labelRegion.frame.size.width , cell.labelRegion.frame.size.height); 
     cell.labelRegion.text = [NSString stringWithFormat:@"A proximité,"]; 

    } 
    else{ 
    Region *region = [Region new]; 
    region =(Region *) [arrayRegion objectAtIndex:indexPath.row]; 
    cell.labelRegion.text =region.nomRegion; 


    } 
    return cell; 
} 

в первый раз, это хорошо, но когда я прокручивать свою первую ячейку (добавляется небольшое изображение) появится в других строках. Что я делаю неправильно? спасибо

ответ

1

У вас есть два типа ячеек, но только один идентификатор повторного использования.

два варианта:

  • Убедитесь, что, когда повторно мобильный он сбрасывает свое состояние по умолчанию, пустое состояние. Для этой цели существует метод prepareForReuse.
  • Определите две разные ячейки, каждая из которых имеет свой собственный уникальный идентификатор повторного использования. Таким образом, ваши первые, различные клетки не будут повторно использованы позже
+0

Я выбрал второе решение, две пользовательские ячейки. благодаря – samir

0

Попробуйте как этого

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


SuggestionCarteCell *cell = (SuggestionCarteCell *)[tableView dequeueReusableCellWithIdentifier:@"carteCell"]; 
UIImageView *imageView; 
if (cell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SuggestionCarteCell" owner:nil options:nil] ; 
    cell = [nib objectAtIndex:0]; 
    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(21, 9, 13, 26)]; 
    imageView.tag = 100; 
    [cell addSubview:imageView]; 
} else { 
    imageView = [cell viewWithTag:100]; 
} 

if (indexPath.row == 0) { 
    // crer l'image 

    NSLog(@" je suis dans row 0"); 

    imageView.image = [UIImage imageNamed:@"iconeLocation"]; 

    cell.labelRegion.frame = CGRectMake(21+13+10, cell.labelRegion.frame.origin.y,cell.labelRegion.frame.size.width , cell.labelRegion.frame.size.height); 
    cell.labelRegion.text = [NSString stringWithFormat:@"A proximité,"]; 

} 
else{ 
    Region *region = [Region new]; 
    region =(Region *) [arrayRegion objectAtIndex:indexPath.row]; 
    cell.labelRegion.text =region.nomRegion; 
    imageView.image = nil; 
} 
return cell; 

}

Таким образом, клетка повторно, вид изображения создаются только один раз, то вы получите его ссылку по его тегу, но в одном случае вы установите его изображение, в другом случае вы установите его на ноль.

Смежные вопросы