Personnalisé UITableViewCell à l'aide de storyboard et de la sous-classe
J'ai créé une sous-classe de UITableViewCell
et je l'ai appelé DCCustomCell
. C'est le DCCustomCell.h
fichier.
#import <UIKit/UIKit.h>
@interface DCCustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *title;
@property (weak, nonatomic) IBOutlet UILabel *date;
@property (weak, nonatomic) IBOutlet UILabel *price;
@end
Toutes les propriétés sont correcty connecté avec les éléments de ma iPhone.storyboard
fichier.
J'ai également choisi le tableViewCell dans iPhone.storyboard
et j'ai placé ma cellule à l'identification de "CustomCell" et la classe de DCCustomCell
.
C'est le UITableViewController de viewDidLoad
méthode:
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView registerClass:[DCCustomCell class] forCellReuseIdentifier:@"CustomCell"];
//Do any additional setup after loading the view, typically from a nib.
}
et c'est la tableView:cellForRowAtIndexPath: méthode:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"CustomCell";
DCCustomCell *cell = (DCCustomCell *)[tableView dequeueReusableCellWithIdentifier:identifier];
NSLog(@"%@" ,cell);
cell.imageView.image = [UIImage imageNamed:@"info_button.png"];
cell.title.text = @"Hello!";
cell.date.text = @"21/12/2013";
cell.price.text = @"€15.00";
return cell;
}
Le problème est que l'imageView est correctement positionnée, mais toutes les étiquettes sont vides. Si je change l'imageView nom de la propriété, par exemple, eventImageView, l'image ne doit pas être programmés.
C'est le résultat:
Je ne peux pas comprendre comment je peux résoudre ce problème.
EDIT: si je supprime
[self.tableView registerClass:[DCCustomCell class] forCellReuseIdentifier:@"CustomCell"];
de viewDidLoad
tous semble fonctionner. pourquoi?
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez remarqué qu'il fonctionne lorsque vous retirez
Vous n'avez qu'à le faire si vous utilisez
dequeueReusableCellWithIdentifier:indexPath:
ET n'ont pas déjà la classe personnalisée dans l'identité de l'inspecteur de la cellule. Si vous utilisezregisterClass: forCellReuseIdentifier
la cellule sera initialisé avecinitWithStyle:reuseIdentifier:
au lieu deinitWithCoder:
ainsi vissage vos connexions que vous avez fait dans le storyboard.Avez-vous lier le Contrôle à IBOutlet ?
Vous pouvez essayer le réglage de DCCustomCell de UITableviewCell classe directement dans la table de montage séquentiel.
Et que vous avez besoin de définir des points de vente avec les contrôles dans la cellule
Essayer:
après
Vous vérifiez d'abord vos prises de courant correctement que toutes les étiquettes sont connectés & écrit aussi ceci :