2011-08-24 18 views
8

Tengo problemas cuando agrego las subvistas a UITableViewCell. Está funcionando cuando el tamaño de la tabla es inferior al tamaño de iPhone.agregar subvistas a UITableViewCell

Pero cuando el tamaño es más grande, tiene un efecto terrible como esto cuando estoy desplazamiento:

enter image description here

Se supone que ser así:

enter image description here entonces creo que proviene de la reutilización de la celda. Aquí es una muestra de mi código:

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

    static NSString *kCellIdentifier = @"UITableViewCellStyleSubtitle"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; 
    if (cell == nil) { 
     //construct the cell 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
             reuseIdentifier:kCellIdentifier] autorelease]; 


     //clear the previuous content 
     NSLog(@"Il y a %d subviews", [[[cell contentView] subviews] count]); 
     //[[[cell contentView] subviews] makeObjectsPerformSelector: @selector(removeFromSuperview)]; 
     NSLog(@"Il y a %d subviews", [[[cell contentView] subviews] count]); 
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]]; 
     [cell setSelectionStyle:UITableViewCellEditingStyleNone]; 
    }  

    switch (indexPath.row) { 
     case 0: 
      [cell addSubview:titleEvent]; 
      break; 
     case 1: 
      //load the owner logo 
      [cell addSubview:logoAsso]; 
      break; 
     case 2: 
      //StartDate 
      [cell addSubview:clockImage]; 
      break; 
     case 3: 
      //EndDate 
      [cell addSubview:clockEndImage]; 
      break; 
     case 4: 
      //Address 
      [cell addSubview:adress]; 
      break; 
     case 5: 
      //map 
      [cell addSubview:map]; 
      break; 
     case 6: 
      //header 
      [Graphism configureSeparationCell:cell]; 
      break; 
     case 7: 
      //descritpion 
      [cell addSubview:descriptionEvent]; 
      break; 
     default: 
      break; 
    } 
    return cell; 
} 

Los subvistas son attributs de la clase, y configurado en el método viewDidLoad. Si me puede decir lo que estoy haciendo mal, eso sería un alivio.

Respuesta

4
switch (indexPath.row) { 
    case 0: 


     if (![cell.contentView viewWithTag:11]) { 

      titleEvent.tag = 11; 

      [cell.contentView addSubview:titleEvent]; 
     } 


     break; 
    case 1: 
     if (![cell.contentView viewWithTag:11]) { 

      logoAsso.tag = 11; 

      [cell.contentView addSubview:logoAsso]; 
     } 

como esto hacer para todas las carcasas de interruptor

-3

[cell.contentView addSubview: clockImage];

5

Prueba este código

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

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIdentifier"] autorelease]; 

    } else { 
     UIView *subView = (UIView *)[cell.contentView viewWithTag:1]; 
     if ([subView superview]) { 
      [subView removeFromSuperview]; 
     } 
    } 

    UIView *subView = [[UIView alloc] init]; 
    subView.tag = 1; 
    [cell.contentView addSubview:subView]; 
    [subView release]; 

    return cell; 
} 
Cuestiones relacionadas