2010-08-09 4 views
0

Ce que j'ai fait est créé une vue TableCell personnalisée qui est remplie avec des informations d'un tableau d'objets. Chaque TableCell se charge dans leTableView ne remplit pas jusqu'à ce que je défile la cellule lorsque la hauteur de la cellule est modifiée

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

    static NSString *CellIdentifier = @"CellIdentifier"; 

    Cell *cell = (Cell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

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

    NSUInteger row = [indexPath row]; 
    NSDictionary *rowData = (NSDictionary *)[self.surveys objectAtIndex:row]; 

    cell.info1.text = [rowData objectForKey:@"info1"]; 
    cell.info2.text = [rowData objectForKey:@"info2"]; 
    cell.info3.text = [rowData objectForKey:@"info3"]; 
    cell.otherInfo = [rowData objectForKey:@"otherInfo"]; 

    return cell; 
} 

En plus de cela, je précise une hauteur personnalisée pour la cellule ici

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 76.0; 
} 

Lorsque la valeur de tableView: heightForRowAtIndexPath: est 76 il charge toutes les cellules que je peut voir et ils ne sont jamais vides. Sans modifier quoi que ce soit d'autre dans le code, je peux modifier la valeur de tableView: heightForRowAtIndexPath: et il montrera seulement la première valeur de cellule quand la vue est chargée. Lorsque je défile vers le bas, ils sont actualisés avec une valeur dès que leur bord supérieur atteint le haut de l'écran. Quand je remonte vers le haut et que j'étire la vue pour qu'elle rebondisse, les inférieures disparaissent. Pour autant que je sache, le changement de hauteur affecte en quelque sorte la façon dont ils sont chargés, mais je ne peux pas pour la vie de moi voir comment.

+1

Est-ce que cela se produit également si vous utilisez UITableViewCells au lieu de votre cellule personnalisée? – mvds

+0

Cela n'arrive pas si c'est un UITableViewCell – mwright

Répondre

0

J'ai spécifié une hauteur dans la cellule personnalisée .xib différente de celle spécifiée dans le code. Une fois que cela a été modifié pour correspondre à la taille spécifiée dans le code, le problème est parti.

0

Une autre chose à prendre en compte n'est pas seulement la taille de la cellule de la vue table personnalisée, mais aussi la hauteur des autres sous-vues.

J'ai eu ce problème lorsque l'un de mes objets UIImageView était plus élevé que la hauteur de la cellule, il causerait ce même problème.

Merci pour le poste car il m'a aidé à résoudre mon problème aussi. +1 (ne me laissera pas voter ou je le ferais, désolé)

Questions connexes