Странная ошибка при добавлении элементов в ячейки прототипа в раскадровке-IB
У меня довольно большой проект (~ 20 сцен). Один из них - TableViewController с пользовательским классом UITableViewController. Я дал ячейке идентификатор повторного использования и добавил к ней ярлык. Когда я пытаюсь и Ctrl + Перетащите ярлык в заголовочный файл UITableViewController, чтобы создать выход, я получаю следующую ошибку:
Ошибка: нелегальная конфигурация: соединение "tableInfoView" не может иметь прототип объекта в качестве места назначения.
Что это? Я не замечаю ничего очевидного? Или мне нужно создать собственный класс ячеек и перетащить на него выход? Если да, то каким образом я могу указать данные, которые однозначно отображаются для каждой ячейки из UITableViewController?
Ответы
Ответ 1
Фактически вы не можете просто сделать выход из прототипа динамической ячейки в контроллере представления делегата UITableView
.
Вам потребуется подкласс UITableViewCell
, а затем присвоить этот класс прототипу.
Затем вы можете Ctrl-Drag из метки в заголовочный файл подкласса UITableViewCell
.
Наконец, вы можете получить доступ к этой розетке в коде делегата после импорта в него заголовочного файла UITableViewCell
.
Это описано Apple там в разделе "Техника для динамического содержимого строки".
Ответ 2
или вы можете присвоить метке метку (например, 100) и использовать
myLabel = [myTableView viewForTag:100];
чтобы получить метку
Ответ 3
У меня была такая же ошибка. Просто добавьте еще одну потенциальную первопричину для будущих читателей:
В моем случае я скопировал элемент управления (кнопка в этом случае) из одной ячейки прототипа в следующую и действие все еще ссылалось на соседнюю ячейку. В моей таблице несколько разных прототипов.
Тот факт, что он по сути был надлежащим подклассом UITableViewCell, который был надлежащим образом связан с прототипом ячейки, затруднял фактически увидеть ошибку.
Ответ 4
У меня возникла такая же проблема, но позже выяснилось, что это была просто глупая ошибка.
Я по ошибке перетащил метку из ячейки в контроллер @interface
Это тоже может быть вашей проблемой. просто перейдите один раз.
Ответ 5
Пометьте метку, и вы можете достигнуть метки в любом месте viewcontroller, например, с помощью viewWithTag из представления таблицы.
UILabel *destinationLabel = (UILabel *)[self.tableView viewWithTag:1];
destinationLabel.text = @"Label Destaination";
Ответ 6
Установите правильный идентификатор повторного использования, используемый в .m файле в Storyboard для ячейки Prototype. У меня была такая же ситуация, и это помогло мне
Ответ 7
Сделав все правильно, если проблема все еще существует, просто удалите все розетки и аккуратно присоединитесь к ним, и это сработало для меня очень хорошо.