2012-03-21 3 views
97

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

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

Любые предложения?

+0

Вы либо заполнили неправильное поле, либо имеете более одного вида таблицы. Можете ли вы опубликовать снимок экрана инспектора атрибутов? – jrturton

+3

Теперь все в порядке. Я нашел решение. Значение идентификатора должно совпадать с идентификатором повторного использования. :) –

+0

Установили ли вы идентификатор для каждой ячейки? –

ответ

135

заткнуться предупреждение вы должны дать имя идентификатора ячейки:

enter image description here

+19

Я сделал это, предупреждение не исчезнет .. .argh – powerj1984

+13

мне повезло. закрыть xcode - откройте его, а затем смените идентификатор –

+0

. Здесь же. Закрытие xcode и переименование не помогли –

0

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

+0

Я тоже это видел, есть ли способ назвать все ячейки сразу или есть другой способ удалить эти предупреждения? – CatsLoveJazz

+1

Каждая ячейка Prototye нуждается в ее уникальном имени. Таким образом, нет возможности сделать это автоматически. – Vincent

0

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

8

Как раскадровка на самом деле является 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.

+1

. Вы можете открыть свою раскадровку как код с помощью Xcode, выполнив CTRL + щелчок на вашем файле раскадровки> «Открыть как»> «Исходный код» – NSTJ

0

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

-(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; 
} 
2

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

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

12

Другой способ заключается в том, чтобы установить свойство «Prototype Cells» в виде таблицы в ноль в Attributes Inspector, если вы определяете ячейку с использованием .xib программно.

Setting prototype cells to 0 in Attributes Inspector

+0

Изменение этого на Statics Cells решило предупреждение – Lucas

0

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

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

Предупреждение идет .. если не чистить :) SDK

0

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

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

2

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

2

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

Смежные вопросы