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



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



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



какие предложения?

687   11  

11 ответов:

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

enter image description here

другой способ - установить свойство Table View 'Prototype Cells' равным нулю в Инспекторе атрибутов, если вы определяете ячейку с помощью a .программно xib.

Setting prototype cells to 0 in Attributes Inspector

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

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

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

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

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

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

  1. есть два сегмента
    1. от навигационного контроллера до корневого контроллера вида и
    2. от корневого контроллера вида к вашему начальному контроллеру вида.
  2. выберите сегмент, соединяющий контроллер корневого вида с этот контроллер начального вида.
  3. имя идентификатора
  4. выберите" прототип " написанная часть контроллера-- > там вы увидите идентификатор в качестве параметра.
  5. вставьте то же имя идентификатора, которое было введено ранее.

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

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

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

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

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

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

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

Comments

    Ничего не найдено.