Pourquoi ai-je une erreur sur l'impossibilité de supprimer la file d'attente lorsque mon UITableView essaie de se charger?
J'obtiens l'erreur suivante:
* Résiliation d'application en raison de uncaught exception 'NSInternalInconsistencyException', la raison: "impossible de retirer une cellule
avec identifiant FontCell - doit s'inscrire une plume ou une classe pour l'
identifiant ou de connecter un prototype de cellule dans un storyboard'
Je ne suis pas sûr exactement ce que je fais mal. J'ai mis la cellule identificateur (par programme, car il n'est pas créé par le biais de l'Interface Builder) et faire tout ce que je pensais que j'étais censé faire dans l'délégué méthodes, mais je suis encore en train d'erreur lorsque j'essaie d'obtenir de la UITableView à charger.
Voici le code (il est intéressant de noter que j'ai sous-classé UITableViewCell pour les options de personnalisation):
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.fonts.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"FontCell";
FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (!cell) {
cell = [[FontCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"FontCell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
int row = indexPath.row;
cell.fontFamilyLabel.text = self.fonts[row];
return cell;
}
Et voici la seule méthode que j'ai changé dans mon sous-classé UITableViewCell (FontCell):
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.fontFamilyLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 200, 20)];
self.fontFamilyLabel.textAlignment = NSTextAlignmentCenter;
[self.contentView addSubview:self.fontFamilyLabel];
}
return self;
}
Exactement ce que je fais mal?
source d'informationauteur Doug Smith
Vous devez vous connecter pour publier un commentaire.
Meilleure solution est de passer à la
FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
Comme avec ton code actuel, vous aurez à vérifier pour être sûrcell
n'est pasnil
si vous n'cette méthode.Alternativement, vous pouvez enregistrer un
UINib
ouClass
au niveau de la table qui est liée à@"FontCell"
Par exemple (dans
viewDidLoad
):Ensuite, vous pouvez faire
La bonne chose avec cette méthode est que vous savez que votre téléphone ne sera jamais
nil
de sorte que vous pouvez immédiatement commencer à le modifier.Vous êtes à l'aide de la
dequeueReusableCellWithIdentifier:forIndexPath:
méthode. La documentation de la méthode dit ceci:Donc ici
J'ai aussi eu un problème, et la solution que j'ai trouvé est:
Aller pour le Projet de Navigateur et sélectionnez “ViewController.h”. Ajouter
après “UIViewController”.
Si à l'aide d'une tableview (pas une table view controller) comme je l'ai été, il n'y a pas de cellules qui apparaissent par défaut.
Dans le scénarimage, sélectionnez la tableview
Ouvrir les Attributs de l'inspecteur de
Changement prototype de cellules de 0 à 1
Sélectionnez le nouveau affiché une cellule de tableau
Dans les Attributs de l'inspecteur de définir la Identitifier "FontCell"