Storyboard-Warnung: Prototyp-Tabellenzellen müssen Wiederverwendungskennungen haben

123

Ich erhalte diese Warnung vom Storyboard - Prototyp-Tabellenzellen müssen wiederverwendbare Kennungen haben.

Ich habe den Bezeichner im Attributinspektor umbenannt, aber die Warnung scheint nicht entfernt worden zu sein.

Irgendwelche Vorschläge?

K. Honda
quelle
Sie haben entweder das falsche Feld ausgefüllt oder Sie haben mehr als eine Tabellenansicht. Können Sie einen Screenshot des Attributinspektors veröffentlichen?
Jrturton
3
Es ist in Ordnung, Kumpel. Ich habe eine Lösung gefunden. Der Wert für Identifier sollte mit dem Wert für die Wiederverwendung identisch sein. :)
K.Honda
Haben Sie für jede Zelle eine Kennung festgelegt?
Mick MacCallum
Hallo Honda! Könnten Sie mir bitte sagen, was Sie getan haben, weil ich den gleichen Fehler erhalte?
Varun Mehta
2
Ich habe festgestellt, dass manchmal (derzeit mit dem neuesten Xcode 5 Beta 5 (5B103i)) falsche Stellen des Fehlers / der Warnung im Storyboard hervorgehoben werden. Wenn Sie also auf die Warnung klicken, wird manchmal die falsche Stelle angezeigt, an der eine ähnliche Warnung bereits behoben werden könnte. Ich schlage vor, manuell alle Tabellenansichten in Ihrem Storyboard zu durchsuchen und zu überprüfen, ob andere Zellen mit fehlender Kennung vorhanden sind. Oben wurde mein Problem mit dieser Warnung gelöst. Vielen Dank an @ K.Honda für die Frage, da mir dieses Thema geholfen hat, das Problem zu beheben.
Justas

Antworten:

159

Um die Warnung auszuschalten, müssen Sie der Zellenkennung einen Namen geben:

Geben Sie hier die Bildbeschreibung ein

aleroot
quelle
14
passierte mir zu. Xcode schließen - öffnen und dann die Kennung ändern
Idan Magled
7
Wenn die Warnung bestehen bleibt, bedeutet dies, dass sich irgendwo in Ihrem StoryBoard noch eine Zelle ohne Kennung befindet
Saimonx
Wenn Sie mehr als 1 Prototypzellen haben, müssen Sie allen einen Indikator geben, andernfalls setzen Sie die Nummer in der Prototypzelle einfach auf eins
user1700737
6
Ich musste den Ordner "Abgeleitete Daten" (Xcode-Äquivalent eines Windows-Neustarts) löschen und neu erstellen, um diese falsche Warnung zu entfernen.
Michael McGuire
Dies funktionierte für mich: Schließen Sie Xcode, öffnen Sie / Users / username / Library / Developer / Xcode / DerivedData im Finder und löschen Sie den gesamten Inhalt (nicht den DerivedData-Ordner selbst).
dldnh
18

Eine andere Möglichkeit besteht darin, die Eigenschaft "Prototypzellen" der Tabellenansicht im Attributinspektor auf Null zu setzen, wenn Sie die Zelle mithilfe einer .xib-Datei programmgesteuert definieren.

Setzen Sie die Prototypzellen im Attributinspektor auf 0

Bitsand
quelle
9

Da es sich bei dem Storyboard tatsächlich um eine XML-Datei handelt, besteht ein weiterer Trick darin, das Storyboard mit einem beliebigen Texteditor (nicht Xcode!) Zu öffnen und zu versuchen, alle tableViewCell-Knoten zu finden. Zum Beispiel drücken CMD + F , geben Sie ein <tableViewCell contentMode="scaleToFill"und drücken Sie die Eingabetaste. Sie werden wahrscheinlich herausfinden, dass die Zeilen mit diesen identisch sind:

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

Bitte achten Sie auf den reuseIdentifier="GenericCellID"Schlüsselwert. Die Zeilen, die die Warnung auslösen (ohne Wiederverwendungskennungen), haben keinen solchen Schlüsselwert. Schauen Sie sich die Knoten oben in Ihrem Texteditor an und Sie werden einen tableViewControllerKnoten mit dem Klassennamen sehen, den Sie im Storyboard-Editor von Xcode überprüfen und gemäß der Antwort von aleroot korrigieren müssen.

Dmitry Varavkin
quelle
1
Sie können Ihr Storyboard als Code mit Xcode öffnen tatsächlich durch eine CTRL + tun auf dem Storyboard - Datei klicken> Open As>Source Code
NSTJ
4

Wenn Ihre Xcode-Warnung auch nach dem Einstellen des reuseIdentifier nicht verschwindet, versuchen Sie das Menü "Produkt -> Reinigen". Das hat mir geholfen und danach wurde die Warnung nicht mehr angezeigt.

Marcel Wassmer
quelle
2

Da ein Doppelklick auf diese Warnung zu einer wilden Gänsejagd führen kann (die spezifische UITableViewCell wird nicht ausgewählt), wollte ich nur hinzufügen, dass einige dieser Warnungen automatisch aufgelöst werden, andere jedoch nicht .

Wenn Sie sicher sind, dass Sie alle Ihre Zellen in Storyboard markiert haben, erstellen Sie das Projekt neu - Ihre Warnung verschwindet möglicherweise (wie meine).

Sitric
quelle
2

Ein Hagel Mary: Der Neustart von XCode hat bei mir funktioniert (aber es war wahrscheinlich nur eine manuelle Neuerstellung erforderlich).

Hannele
quelle
1

Ich habe diese Warnung für Xcode 7 erhalten. Ich arbeite mit Swift. Ich habe den Navigationscontroller für den anfänglichen Ansichtscontroller nicht hinzugefügt. Als ich das tat, bekam ich diese Warnung von StoryBoard. Was ich getan habe ist:

  1. Es gibt zwei Abschnitte
    1. vom Navigations-Controller zum Root-View-Controller und
    2. vom Root View-Controller zu Ihrem ursprünglichen View-Controller.
  2. Wählen Sie den Abschnitt aus, der den Root-View-Controller mit dem anfänglichen View-Controller verbindet.
  3. Benennen Sie die Kennung
  4. Wählen Sie den geschriebenen Teil "Prototyp" des Controllers aus -> dort wird die Kennung als Option angezeigt.
  5. Fügen Sie den gleichen Namen wie zuvor eingegeben ein.

Die Warnung geht .. wenn nicht sdk reinigen :)

Mili
quelle
1

Stellen Sie sicher, dass Sie die Wiederverwendungskennung für das Objekt und nicht die Wiederherstellungs-ID festlegen . Beide sind über das Storyboard verfügbar und leicht zu verwechseln.

In der Storyboard - XML - Datei möchten Sie zu Einstellung reuseIdentifier, nicht restorationIdentifier.

pkamb
quelle
0

Ich habe festgestellt, dass dieser Fehler auftritt, wenn Sie mehrere Prototypzellen (in den Tabellenansichtseigenschaften) haben und nicht allen wiederverwendbare Kennungen zugewiesen haben .

Tjalsma
quelle
Ich habe das auch gesehen. Gibt es eine Möglichkeit, alle Zellen gleichzeitig zu benennen, oder gibt es eine andere Möglichkeit, diese Warnungen zu entfernen?
CatsLoveJazz
1
Jede Prototye-Zelle benötigt einen eigenen Namen. Es gibt also keine Möglichkeit, dies automatisch zu tun
Vincent
0

Der Bezeichner ist der Name, auf den Sie sich in Ihrer .m-Datei beziehen. Wenn es nicht gefüllt ist, ist es nicht möglich, auf die Zelle zu verweisen.

Vincent
quelle
0

Dies dient zum programmgesteuerten Einstellen der Wiederverwendungskennung

-(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;
}
Mukesh
quelle