Предупреждение раскадровки: ячейки таблицы прототипов должны иметь идентификаторы повторного использования
Я получаю это предупреждение от раскадровки-прототипные ячейки таблицы должны иметь идентификаторы повторного использования.
Я переименовал идентификатор в инспекторе атрибутов, но он, похоже, не удалил предупреждение.
какие предложения?
11 ответов:
как раскадровка на самом деле 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. Я работаю со Свифтом. Я не добавил навигационный контроллер для начального контроллера вида. Когда я это сделал.. Я получил это предупреждение от раскадровки. Вот что я сделал:
- есть два сегмента
- от навигационного контроллера до корневого контроллера вида и
- от корневого контроллера вида к вашему начальному контроллеру вида.
- выберите сегмент, соединяющий контроллер корневого вида с этот контроллер начального вида.
- имя идентификатора
- выберите" прототип " написанная часть контроллера-- > там вы увидите идентификатор в качестве параметра.
- вставьте то же имя идентификатора, которое было введено ранее.
предупреждение идет.. если не очистить 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