2012-10-09 2 views
1

J'ai créé un UItableViewCell personnalisé. J'ai mis un Label dans la cellule du storyboard et j'ai fait le lien avec la classe. Je veux changer la position de l'étiquette en fonction de l'index de la ligne. Ceci est mon code:Personnalisé UITableViewCell ne répond pas aux modifications

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

static NSString *CellIdentifier = @"Cell"; 
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

// Configure the cell... 

cell.titleLabel.frame = CGRectMake(100.0, 20.0, cell.titleLabel.frame.size.width, cell.titleLabel.frame.size.height); 

cell.titleLabel.text = @"Test"; 

return cell; 

}

Le problème est que l'étiquette ne change pas de position, son sur le même endroit où je l'ai mis en story-board. Cependant, lorsque je fais défiler vers le haut et vers le bas, les cellules sont à nouveau chargées et l'étiquette se déplace au bon endroit. Qu'est-ce que je fais mal?

+0

Uhm, si vous avez connecté l'IBOutlet cela fonctionnerait. Cette méthode semble nouvelle pour moi dequeueReusableCellWithIdentifier: forIndexPath:? Pourquoi indexer le chemin? Avez-vous essayé d'implémenter prepareForReuse: dans votre cellule personnalisée? – Leonardo

+0

Leo, c'est une méthode habituelle pour dériver une cellule réutilisable :) Mais quand vous chargez la table pour la première fois, il n'y a pas de cellules à déquiler, donc il semble que ce soit l'erreur. – Stas

Répondre

0

Il semble que vous ayez réellement oublié de créer une cellule (au moins, je ne vois pas le code qui crée la cellule). Cela pourrait ressembler à:

SPAccountHeaderCell * headerCell = (SPAccountHeaderCell *)[tableView dequeueReusableCellWithIdentifier:@"headerCell"]; 
if (headerCell == nil) { 
    headerCell = [[SPAccountHeaderCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"headerCell"]; 
} 
Questions connexes