Avertissement de storyboard: les cellules de table prototypes doivent avoir des identifiants de réutilisation


123

Je reçois cet avertissement du storyboard - les cellules de table prototypes doivent avoir des identifiants de réutilisation.

J'ai renommé l'identifiant dans l'inspecteur d'attributs mais il ne semble pas avoir supprimé l'avertissement.

Aucune suggestion?


Vous avez soit rempli le mauvais champ, soit vous avez plusieurs vues de table. Pouvez-vous publier une capture d'écran de l'inspecteur d'attributs?
jrturton

3
C'est bon maintenant mon pote. J'ai trouvé une solution. La valeur de l'identificateur doit être la même que celle de l'identificateur de réutilisation. :)
K.Honda

Avez-vous défini un identifiant pour chaque cellule?
Mick MacCallum

Salut Honda! Pourriez-vous s'il vous plaît me dire ce que vous avez fait parce que j'obtiens la même erreur.
Varun Mehta

2
J'ai remarqué que parfois (en utilisant actuellement le dernier Xcode 5 Beta 5 (5B103i)) met en évidence les mauvais emplacements de l'erreur / avertissement dans le storyboard. Donc, si vous cliquez sur l'avertissement, il affichera parfois le mauvais emplacement où un avertissement similaire pourrait déjà être corrigé. Je suggère de parcourir manuellement l'une des vues de table que vous avez dans votre storyboard et de vérifier s'il existe d'autres cellules avec un identifiant manquant. Ci-dessus résolu mon problème avec cet avertissement. Merci @ K.Honda d'avoir posé la question car ce sujet m'a aidé à comprendre comment résoudre le problème.
Justas

Réponses:


159

Pour fermer l'avertissement, vous devez donner un nom à l'identificateur de cellule:

entrez la description de l'image ici


14
m'est arrivé. fermez xcode - ouvrez-le, puis changez l'identifiant
Idan Magled

7
Lorsque l'avertissement persiste, cela signifie que quelque part dans votre StoryBoard, il y a encore une cellule sans identifiant
saimonx

Si vous avez plus d'une cellule prototype, vous devez leur donner un indicateur, sinon définissez simplement le nombre sur un dans la cellule prototype
user1700737

6
J'ai dû supprimer le dossier des données dérivées (équivalent Xcode d'un redémarrage de Windows) et le reconstruire pour me débarrasser de ce faux avertissement.
Michael McGuire

Cela a fonctionné pour moi: fermez Xcode, ouvrez / Users / username / Library / Developer / Xcode / DerivedData dans Finder et supprimez tout son contenu (pas le dossier DerivedData lui-même).
dldnh

18

Une autre méthode consiste à définir la propriété «Cellules prototypes» de la vue tableau sur zéro dans l'inspecteur d'attributs, si vous définissez la cellule à l'aide d'un .xib par programme.

Définition des cellules prototypes sur 0 dans l'inspecteur d'attributs


9

Comme le storyboard est en fait un fichier XML, une autre astuce consiste à ouvrir votre storyboard avec n'importe quel éditeur de texte (pas Xcode!) Et à essayer de trouver tous les nœuds tableViewCell. Par exemple, appuyez sur CMD + F , tapez <tableViewCell contentMode="scaleToFill"et appuyez sur Entrée. Vous découvrirez probablement les mêmes lignes que celle-ci:

<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="GenericCellID" id="kBr-Qn-Tki">

Veuillez prêter votre attention sur la reuseIdentifier="GenericCellID"valeur clé. Les lignes qui déclenchent l'avertissement (sans réutilisation des identificateurs) n'auront pas une telle valeur de clé. Regardez les nœuds ci-dessus dans votre éditeur de texte et vous verrez le tableViewControllernœud avec le nom de classe que vous devez vérifier dans l'éditeur de storyboard de Xcode et corriger, selon la réponse d'aleroot.


1
Vous pouvez effectivement ouvrir votre story - board code avec Xcode en faisant un CTRL + clic sur votre fichier story - board> Open As>Source Code
NSTJ

4

Si votre avertissement Xcode ne disparaît toujours pas même après avoir défini reuseIdentifier, essayez le menu "Produit -> Nettoyer". Cela m'a aidé et après cela, l'avertissement n'est plus apparu.


2

Étant donné que le double-clic sur cet avertissement peut entraîner un peu une chasse à l'oie sauvage (le UITableViewCell spécifique n'est pas sélectionné), je voulais simplement ajouter que si certains de ces avertissements se résoudront automatiquement, d' autres ne le seront pas .

Si vous êtes sûr d'avoir balisé toutes vos cellules dans Storyboard, reconstruisez le projet - votre avertissement peut disparaître (comme le mien).


2

Un salut Mary: le redémarrage de XCode a fonctionné pour moi (mais c'était probablement juste une reconstruction manuelle qui était nécessaire).


1

J'ai reçu cet avertissement pour Xcode 7. Je travaille avec Swift. Je n'ai pas ajouté le contrôleur de navigation pour le contrôleur de vue initial. Quand je l'ai fait ... j'ai reçu cet avertissement de StoryBoard. Ce que j'ai fait c'est:

  1. Il y a deux segments
    1. du contrôleur de navigation au contrôleur de vue racine et
    2. du contrôleur Root View à votre contrôleur View initial.
  2. Sélectionnez le segue connectant le contrôleur de vue racine au contrôleur de vue initial.
  3. Nommez l'identifiant
  4. Sélectionnez la partie écrite "Prototype" du contrôleur -> vous y verrez l'identifiant en option.
  5. Collez le même nom de l'identifiant que celui entré précédemment.

L'avertissement disparaît ... sinon nettoyez le sdk :)


1

Assurez-vous que vous définissez l' identificateur de réutilisation sur l'objet, plutôt que l' ID de restauration . Les deux sont disponibles via le storyboard et facilement confondus.

Dans le fichier XML du storyboard, vous voudrez définir reuseIdentifier, non restorationIdentifier.


0

J'ai remarqué que cette erreur se produit lorsque vous avez plusieurs cellules prototypes (dans les propriétés de tableview) et que vous ne leur avez pas toutes donné des identificateurs de réutilisation.


J'ai vu cela aussi, existe-t-il un moyen de nommer toutes les cellules à la fois ou existe-t-il un autre moyen de supprimer ces avertissements?
CatsLoveJazz

1
Chaque cellule Prototye a besoin de son propre nom. Il n'y a donc aucun moyen de le faire automatiquement
Vincent

0

L'identifiant est le nom auquel vous faites référence dans votre fichier .m. Lorsqu'il n'est pas rempli, il n'est pas possible de référencer la cellule.


0

Ceci pour définir l'identifiant de réutilisation par programme

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath*)indexPath 
{
    static NSString *cellIdentifier = @"wot";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

    if (!cell)
        cell = [[UITableViewCell alloc] initWithStyle: someStyle reuseIdentifier: cellIdentifier];

    return cell;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.