2009-05-21 8 views
1

J'ai une classe A qui hérite de UITableViewCell (pour personnaliser une cellule de tableau). Il a des membres disent x qui est un UILabel. Maintenant, si je veux définir des valeurs comme a.x.text = "du texte" dans la méthode cellForRowAtIndexPath, j'obtiens une erreur de compilation "erreur pour le membre x dans la cellule qui est de type non-UITableViewCell".Problème de sous-classe UITableViewCell

Pourriez-vous s'il vous plaît laissez-moi savoir comment puis-je résoudre ce problème?

Merci.

Répondre

2

Tout d'abord, assurez-vous que votre propriété est correctement définie:

@interface A : UITableViewCell { 
    UILabel *x; 
} 

@property (nonatomic, retain) IBOutlet UILabel *x; 

@end 

alors assurez-vous avez inclus dans votre Ah vue de la table source de données et assurez-vous que vous êtes la coulée de la cellule de type A:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"cell"; 
    A *a = (A *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (a == nil) { 
    a = [[A alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier]; 
    } 
    a.x.text = @"some text"; 
    return a; 
} 
+0

x est une propriété de classe A, et je suis le code comme ci-dessus. J'ai inclus A.h dans le fichier viewcontroller.m (où est la méthode cellForRowAtIndexPath). Pourriez-vous me dire comment inclure A.h dans ma source de données de vue de table? – ebaccount

+0

Le tableau: cellForRowAtIndexPath: est une méthode UITableViewDataSource - donc si vous avez inclus A.h dans votre contrôleur de vue, c'est tout ce que je voulais dire. Assurez-vous que vous activez votre cellule pour taper A * et non UITableViewCell *, car UITableViewCell n'a évidemment pas votre propriété personnalisée. – pix0r

+0

Merci pour votre réponse. C'etait mon erreur. J'utilisais UITableViewCell * cellule au lieu de A * cellule. C'est réparé maintenant. – ebaccount

0

Assurez-vous d'ajouter x comme une propriété à votre sous-classe:

@interface ACell : UITableViewCell { 
     UILabel *X; 
} 

@property (readonly, nonatomic) UILabel* X; 
0

Essayez d'utiliser:

[[a x] setText:@"your text]; 

Et voir ce qui se passe.

Questions connexes