dequeueReusableCellWithIdentifier renvoie toujours zéro (n'utilisant pas de storyboard)
Je suis de la création de la cellule par programmation à l'aide de la réutilisation de l'identificateur.
Note - je ne suis pas à l'aide de storyboard pour la création de la cellule
Chaque fois que la cellule est retiré, la cellule est nul, de sorte que la cellule doit être nouvellement créé à l'aide d'alloc, ce qui est coûteux.
MODIFIER (ajouter 1 plus de question et le code corrigé)
Question
- Pourquoi cette file d'attente toujours retourner nil ? Comment puis-je la corriger ?
- Ne file d'attente de travail uniquement lorsqu'il est utilisé avec la table de montage séquentiel /plume fichier ?
Code
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell) //Every time cell is nil, dequeue not working
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
return cell;
}
Combien de fois est-ce que cela retourner nil? Et combien de ces cellules sont affichées simultanément sur votre écran des périphériques? En réutilisant les moyens de ré-utilisation de ces cellules, qui ont été défilé hors de l'écran.
Et Srikar est droit. La cellule appropriée de l'identificateur doit être défini sur le nouvellement créé cellules.
Elle renvoie nil toujours. 4 cellules sont affichées à un moment donné et quand je scroll dequeue retourne nil.
Et Srikar est droit. La cellule appropriée de l'identificateur doit être défini sur le nouvellement créé cellules.
Elle renvoie nil toujours. 4 cellules sont affichées à un moment donné et quand je scroll dequeue retourne nil.
OriginalL'auteur user1046037 | 2012-11-14
Vous devez vous connecter pour publier un commentaire.
Vous devez tout d'abord définir les
CellIdentifier
commeCell
. Tu fais ça? Lors de la création d'une nouvelle cellule, vous devez affecter cette identificateurCell
. alors seulement iOS sera en mesure dedequeueReusableCellWithIdentifier
avec cet identifiant. Par programmation, vous pouvez le faire commeVous pouvez définir l'identificateur d'Interface Builder trop
hey man, je fournis la solution pour les deux. Veuillez lire la réponse correctement. d'abord j'ai donné programatic solution, alors par souci d'exhaustivité, à condition que l'IB solution.
désolé, NSString CellIdentifier est défini comme @"Cellule". Remarque le code original a été mis à jour maintenant. Je suis en train de faire cela, il est présent dans le code que j'ai collé. Pouvez-vous me faire savoir si je suis en manque de quelque chose. Toujours pas de travail.
OriginalL'auteur Srikar Appalaraju
J'ai été faire quelques erreurs:
UITableViewController
, mais a été la création de la tableView à l'extérieur de la sous-classetableView
créé dans le table view controller, qui estself.tableView
Dans la tableview contrôleur tandis que le retour de la cellule pour l'indice de chemin, j'ai été en utilisantself.tableView
au lieu detableView
.Également, vous assurer que la cellule identificateur est déclarée comme
static
Depuis
tableView
etself.tableView
étaient représentant les différents tableaux, la cellule n'a pas été retiré de la même table et était donc toujoursnil
Point 2. Pour supprimer complètement l'ambiguïté j'ai nommé le
tableView
dans monnib
àmTableView
.OriginalL'auteur user1046037
Ce code devrait être de générer de l'avertissement que "le contrôle a atteint sa fin de non-void function" parce que vous n'êtes pas réellement de retourner quoi que ce soit. Ajouter
return cell;
à la fin de la fonction. En outre, vous n'ajoutez jamais de la réutilisation de l'identificateur pour le nouvellement créé cellules.OriginalL'auteur Mick MacCallum
D'abord déclarer cellule identificateur pour un tableViewCell à la viewDidLoad méthode:
Maintenant rappeler l'exemple de la UITableViewCell avec le même identifiant "MyCell":
Plus il suffit de remplir jusqu'à la cellule .. Maintenant la logique de l'exécute nombre limité de cellules sont en mesure de montrer extrêmement vastes liste efficacement (à l'aide de résorption de concept).
Mais n'oubliez pas d'accorder de la valeur (même nulle si nécessaire) pour chaque UIView utilisé dans la cellule, sinon l'écrasement de chevauchement de texte /images va se passer.
OriginalL'auteur Shanu ji