Предупреждение раскадровки: ячейки таблицы прототипа должны иметь идентификаторы повторного использования - PullRequest
115 голосов
/ 21 марта 2012

Я получаю это предупреждение от раскадровки - ячейки таблицы прототипа должны иметь идентификаторы повторного использования.

Я переименовал идентификатор в инспекторе атрибутов, но, похоже, он не удалил предупреждение.

Есть предложения?

Ответы [ 11 ]

153 голосов
/ 30 мая 2012

Чтобы отключить предупреждение, вы должны дать имя идентификатору ячейки:

enter image description here

17 голосов
/ 22 июля 2015

Другой способ - установить нулевое значение свойства табличного представления «Ячейки прототипа» в Инспекторе атрибутов, если вы определяете ячейку с помощью .xib программно.

Setting prototype cells to 0 in Attributes Inspector

9 голосов
/ 24 февраля 2015

Поскольку раскадровка на самом деле представляет собой XML-файл, поэтому другой прием - открыть раскадровку в любом текстовом редакторе (не Xcode!) И попытаться найти все узлы tableViewCell.Например, нажмите CMD + F , введите <tableViewCell contentMode="scaleToFill" и нажмите Enter.Вы, вероятно, узнаете, строки совпадают с этой:

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

Пожалуйста, обратите внимание на значение ключа reuseIdentifier="GenericCellID".Строки, которые выдают предупреждение (без повторного использования идентификаторов), не будут иметь такого значения ключа.Посмотрите на узлы выше в вашем текстовом редакторе, и вы увидите tableViewController узел с именем класса, который вы должны проверить в редакторе раскадровки Xcode и исправить, согласно ответу aleroot.

4 голосов
/ 30 октября 2017

Если предупреждение Xcode все еще не исчезло даже после того, как вы установили reuseIdentifier, попробуйте Меню «Продукт -> Очистить». Это помогло мне, и после этого предупреждение больше не появлялось.

2 голосов
/ 30 января 2017

Привет, Мария: перезапуск XCode работал для меня (но, вероятно, потребовалось просто ручное перестроение).

2 голосов
/ 15 июля 2015

Поскольку двойной щелчок по этому предупреждению может привести к некоторой погоне за диким гусем (конкретный UITableViewCell не выбирается), просто хотел добавить, что хотя некоторые из этих предупреждений будут автоматически разрешаться, некоторые будутне .

Если вы уверены, что отметили все свои ячейки в раскадровке, перестройте проект - ваше предупреждение может исчезнуть (как и мое).

1 голос
/ 30 августа 2016

Убедитесь, что вы устанавливаете идентификатор повторного использования для объекта, а не идентификатор восстановления .Оба доступны через раскадровку, и их легко перепутать.

В XML-файле раскадровки вы захотите установить reuseIdentifier, а не restorationIdentifier.

1 голос
/ 25 июня 2016

Я получил это предупреждение для Xcode 7. Я работаю со Swift. Я не добавил навигационный контроллер для начального просмотра контроллера. Когда я это сделал .. Я получил это предупреждение от StoryBoard. Что я сделал, это:

  1. Есть два segues
    1. от контроллера навигации до контроллера корневого просмотра и
    2. с контроллера Root View на ваш начальный контроллер View.
  2. Выберите переход, соединяющий корневой контроллер вида с начальный вид контроллера.
  3. Назовите идентификатор
  4. Выберите «Прототип» написанной части контроллера -> там Вы увидите идентификатор в качестве опции.
  5. Вставьте то же имя идентификатора, которое было введено ранее.

Предупреждение выходит .. если не убрать sdk:)

0 голосов
/ 04 марта 2015

Это для установки идентификатора повторного использования программно

-(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;
}
0 голосов
/ 02 сентября 2014

Идентификатор - это имя, на которое вы ссылаетесь в файле .m.Когда он не заполнен, невозможно ссылаться на ячейку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...