Розетки не могут быть подключены к повторяющемуся контенту iOS
Я только что создал приложение и начал подключать @IBOutlet к раскадровке. Я подключаю некоторые из них к меткам в ячейке прототипа UITableViewCell с базовым стилем. Когда я подключаю его, Хотя я получаю эту ошибку в раскадровке:
вывод detailText из TableViewController в UILabel недопустим. Розетки не могут быть подключены к повторяющемуся контенту.
может кто-нибудь помочь мне? Я настроил его так, как я всегда делаю успешно, но на этот раз он бросил мне эту ошибку.
6 ответов:
создайте подкласс ячейки табличного представления и установите его в качестве класса прототипа. Добавьте розетки к этому классу и подключите их. Теперь при настройке мобильного вы можете получить доступ к розеткам.
есть два типа таблиц представления ячеек, предоставляемых вам через раскадровку, они Динамические Прототипы и Статические Ячейки
1. Динамические Прототипы
из имени этот тип ячеек генерируется динамически. Они управляются с помощью вашего кода, а не раскадровки. С помощью делегата табличного представления и источника данных можно указать количество ячеек, высоты ячеек, прототип ячеек программно.
когда вы перетаскиваете ячейку в табличное представление, вы объявляете прототип ячеек. Затем вы можете создать любое количество ячеек базы на этом прототипе и добавить затем в табличное представление, хотя
cellForRow
метод, программно. Преимущество этого заключается в том, что вам нужно только определить 1 прототип вместо того, чтобы создавать каждую ячейку со всеми видами, добавленными к ним самостоятельно(см. статическую ячейку).в этом случае, вы не удается подключить элементы пользовательского интерфейса на прототипе ячейки к контроллеру представления. У вас будет только один инициированный объект контроллера вида, но у вас может быть много объектов ячеек, инициированных и добавленных в ваше табличное представление. Не имеет смысла подключать прототип ячейки к контроллеру вида, потому что вы не можете управлять несколькими ячейками с одним подключением контроллера вида. И вы получите ошибку, если вы это сделаете.
чтобы устранить эту проблему, необходимо подключить метка прототипа к
Если вы используете табличное представление для отображения настроек и других параметров (например, встроенное приложение настроек), то вы можете установить свой Таблица Содержания до Статические Ячейки под атрибуты инспектора. Кроме того, для этого необходимо внедрить табличное представление в экземпляр UITableViewController.
или вы не должны использовать IBOutlet для ссылки на объект в представлении. Вы можете дать метку в tableViewCell значение тега, например, установить тег 123 (это может быть сделано инспектором атрибутами). Затем вы можете получить доступ к метке по
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "someID", for: indexPath) let label = cell.viewWithTag(123) as! UILabel //refer the label by Tag switch indexPath.row { case 0: label.text = "Hello World!" default: label.text = "Default" } return cell }