2010-11-07 4 views
0

Dans cette méthode:Arrête le rechargement de UITableViewCell lorsque la cellule réapparaît!

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

Si j'appelle un NSLog il affichera ce journal lorsque les UITableViewCell montre à l'écran chaque fois. Je me demandais simplement s'il est possible de charger cette cellule une fois et de ne pas la recharger à chaque fois qu'elle apparaît à nouveau. Je comprends que ce n'est pas une conception très efficace, mais c'est juste sur la seule cellule dont j'ai besoin pour le faire!

Merci

+0

Quel problème essayez-vous de résoudre où vous pensez que cela serait bénéfique pour vous? – imaginaryboy

+0

Juste posté un commentaire sur la réponse ci-dessous ... –

Répondre

1

Sûr. Vous pouvez créer votre (vos) cellule (s) une fois, par exemple dans viewDidLoad :, et le renvoyer depuis tableView: cellForRowAtIndexPath :. cellForRowAtIndexPath sera toujours appelé, mais vous créez/initialisez votre cellule une seule fois. Si vous aimez, vous pouvez créer toutes vos cellules de cette façon et les stocker dans un tableau. N'oubliez pas de libérer ces cellules lorsque la vue est déchargée.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _myCachedCell = [[UITableViewCell alloc] initWithStyle: UITableViewStylePlain reuseIdentifier: nil]; 
    _myCachedCell.textLabel.text = @"some text"; 
} 


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

    if (indexPath.section == 0 && indexPath.row == 0) 
     return _myCachedCell; 
+0

Merci de l'essayer maintenant! :) –

+3

pas une bonne idée –

+1

Je ne prétends pas que c'est une bonne idée ou non. La question a déclaré qu'il a compris que ce n'est pas le meilleur design. Mais, si vous avez un TableView avec un nombre limité de cellules fixes, cela peut être un moyen rapide et facile d'obtenir ce dont vous avez besoin. – TomSwift

Questions connexes