8
votes

CellfornatindExpath: retourne nil pour une cellule de prototype générique

Ceci me rend sur les noix!

J'ai une classe générique UitailViewController avec une cellule de prototype générique, avec un identifiant "mycell". Développement sous arc, iOS5 et à l'aide de storyboard, j'utilise la méthode suivante: P>

if (cell == nil)
 cell = [UITableViewCell alloc] initWithStyle....


3 commentaires

Je rencontre le même problème. Pouvez-vous s'il vous plaît dire comment avez-vous résolu ce problème? Je dois manquer quelque chose dans la configuration de la scénario.


Je ne l'ai pas encore compris. Si je trouve la réponse, je posterai ici ici.


On dirait que nous manquons quelque chose dans le scénario. Il a probablement un comportement par défaut que nous devons changer. Je me demande combien d'autres personnes ont le même problème ...


4 Réponses :


2
votes

Vous devez créer votre cellule:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"] autorelease];
    }

    cell.textLabel.text = @"Title";
    return cell;
}


1 commentaires

Ceci est sous ARC, pas besoin d'alloc / init / autorelease. Le storyboard est censé faire cela, comme cela fait dans toutes les autres instances UitablesViewController.



0
votes

J'ai eu le même problème et j'ai juste réussi à le surmonter. Si vous créez des données de cellules dynamiquement, vous devez faire les choses suivantes:

  1. Sélectionnez la vue Table.
  2. Ensuite, allez à l'inspecteur d'objets à la troisième onglets de la droite.
  3. La première option est nommée: "Contenu". Changez la sélection des "cellules statiques" en "prototypes dynamiques".
  4. Assurez-vous de définir l'identifiant de la cellule correctement et il s'agit du même nom que vous utilisez sur le "DequueresablecellwithIdentifier"

    Cela a fonctionné pour moi. J'ai arrêté de recevoir des valeurs de cellule "nil" et tout semble fonctionner correctement.


0 commentaires

2
votes

Finalement j'ai trouvé le bogue. Je ne peux pas dire que j'ai trouvé la cause fondamentale, mais j'échresse la ligne par ligne, c'est ce que j'ai trouvé et travaillé pour moi.

J'ai des objets dans mon UitailViewController qui doit être ALLOC / INITED'ADÉ avant que la vue ne soit chargée, de sorte que lorsque les appelants peuvent les définir sur des valeurs préalablement déterminées. Étant donné que ViewDidLoad est trop tard, je les ai mis dans initwithcoder méthode.

Commettant et réécriture de la méthode initwithcoder a résolu le problème. Il me semblait, que initwithcoder inadirait le utablevoller comme certains différents!


0 commentaires

0
votes

Si l'instruction "si" est en train de tomber à true (cellule == nil) pour ce qui suit: xxx

alors le nom @ "mycell" était soit mal orthographié (ne correspond pas) ou est manquant dans le champ Identifiant de scénario de la cellule.


0 commentaires