Я только что создал приложение и начал подключать @ IBOutlet к раскадровке. Я подключаю некоторые из них к меткам в ячейке прототипа UITableViewCell с базовым стилем. Когда я подключаю его, я получаю эту ошибку в раскадровке:
Вывод detailText из TableViewController в UILabel недопустим. Розетки не могут быть связаны с повторяющимся контентом.
Кто-нибудь может мне помочь? Я настроил его так, как я всегда делаю успешно, но на этот раз он забросил меня на эту ошибку.
ios
storyboard
Tomblasta
источник
источник
Ответы:
Создайте подкласс ячейки табличного представления и установите его как класс прототипа. Добавьте розетки к этому классу и соедините их. Теперь при настройке ячейки вы можете получить доступ к розеткам.
источник
Существует два типа ячеек табличных представлений, предоставляемых вам через раскадровку: динамические прототипы и статические ячейки.
1. Динамические прототипы
Из названия этот тип ячейки генерируется динамически. Они контролируются вашим кодом, а не раскадровкой. С помощью делегата табличного представления и источника данных вы можете программно указать количество ячеек, высоту ячеек, прототип ячеек.
Когда вы перетаскиваете ячейку в табличное представление, вы объявляете прототип ячейки. Затем вы можете создать любое количество ячеек на основе этого прототипа и программно добавить их в табличное представление с помощью
cellForRow
метода. Преимущество этого состоит в том, что вам нужно только определить 1 прототип, а не создавать каждую ячейку со всеми видами, добавленными к ним самостоятельно (см. Статическую ячейку).Поэтому в этом случае вы не можете подключить элементы пользовательского интерфейса прототипа ячейки к вашему контроллеру представления. У вас будет инициирован только один объект контроллера представления, но у вас может быть много объектов ячейки, инициированных и добавленных в ваше табличное представление. Не имеет смысла подключать прототип ячейки к контроллеру представления, потому что вы не можете управлять несколькими ячейками с помощью одного соединения контроллера представления. И вы получите ошибку, если вы это сделаете.
Чтобы решить эту проблему, вам нужно подключить вашу метку прототипа к
UITableViewCell
объекту. AUITableViewCell
также является прототипом ячеек, и вы можете инициировать столько объектов ячеек, сколько хотите, каждый из которых затем подключается к представлению, сгенерированному из вашего прототипа ячейки таблицы раскадровки.Наконец, в вашем
cellForRow
методе создайте пользовательскую ячейку изUITableViewCell
класса и делайте забавные вещи с меткой2. Статические ячейки
С другой стороны, статические ячейки действительно настроены через раскадровку. Вы должны перетащить элементы пользовательского интерфейса в каждую ячейку, чтобы создать их. Вы будете управлять номерами ячеек, высотой и т. Д. Из раскадровки. В этом случае вы увидите табличное представление, точно такое же с вашего телефона, по сравнению с тем, что вы создали из раскадровки. Статические ячейки чаще используются для настройки страницы, которые меняются не сильно.
Чтобы управлять элементами пользовательского интерфейса для статической ячейки, вам действительно необходимо подключить их непосредственно к контроллеру представления и настроить их.
источник
+100
Если вы используете вид таблицы для настройки отображения и других параметров (например , встроенные в настройках приложение делает), то вы можете установить Table View Content для статических ячеек под атрибутами инспектора . Кроме того, для этого необходимо встроить табличное представление в экземпляр UITableViewController.
источник
Или вам не нужно использовать IBOutlet для ссылки на объект в представлении. Вы можете присвоить метке в tableViewCell значение тега, например, установите для тега значение 123 (это может сделать инспектор атрибутов). Тогда вы можете получить доступ к ярлыку по
источник
Со мной у меня есть
UIViewcontroller
, и в нем у меня есть таблица с пользовательской ячейкой на нем. Я сопоставляю свою точку выхода UILabelUItableviewcell
сUIViewController
полученной ошибкой.источник
Поскольку большинство людей указало, что подклассы
UITableViewCell
решают эту проблему. Но причина этого недопустима, потому что прототип ячейки ( UITableViewCell ) определен Apple, и вы не можете добавить к нему свои собственные выходы.источник
Иногда XCode не может правильно контролировать подключение к ячейке.
Каким-то образом метка / кнопка моей текущей ячейки соединилась с другой, я просто удаляю их, и ошибка исчезает.
источник
Нажмите на симулятор, перейдите к окну и включите панели устройства
источник