Розетки не могут быть подключены к повторяющемуся контенту iOS


Я только что создал приложение и начал подключать @IBOutlet к раскадровке. Я подключаю некоторые из них к меткам в ячейке прототипа UITableViewCell с базовым стилем. Когда я подключаю его, Хотя я получаю эту ошибку в раскадровке:

вывод detailText из TableViewController в UILabel недопустим. Розетки не могут быть подключены к повторяющемуся контенту.

может кто-нибудь помочь мне? Я настроил его так, как я всегда делаю успешно, но на этот раз он бросил мне эту ошибку.

6 122

6 ответов:

создайте подкласс ячейки табличного представления и установите его в качестве класса прототипа. Добавьте розетки к этому классу и подключите их. Теперь при настройке мобильного вы можете получить доступ к розеткам.

есть два типа таблиц представления ячеек, предоставляемых вам через раскадровку, они Динамические Прототипы и Статические Ячейки

enter image description here

1. Динамические Прототипы

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

когда вы перетаскиваете ячейку в табличное представление, вы объявляете прототип ячеек. Затем вы можете создать любое количество ячеек базы на этом прототипе и добавить затем в табличное представление, хотя cellForRow метод, программно. Преимущество этого заключается в том, что вам нужно только определить 1 прототип вместо того, чтобы создавать каждую ячейку со всеми видами, добавленными к ним самостоятельно(см. статическую ячейку).

в этом случае, вы не удается подключить элементы пользовательского интерфейса на прототипе ячейки к контроллеру представления. У вас будет только один инициированный объект контроллера вида, но у вас может быть много объектов ячеек, инициированных и добавленных в ваше табличное представление. Не имеет смысла подключать прототип ячейки к контроллеру вида, потому что вы не можете управлять несколькими ячейками с одним подключением контроллера вида. И вы получите ошибку, если вы это сделаете.

enter image description here

чтобы устранить эту проблему, необходимо подключить метка прототипа к

Если вы используете табличное представление для отображения настроек и других параметров (например, встроенное приложение настроек), то вы можете установить свой Таблица Содержания до Статические Ячейки под атрибуты инспектора. Кроме того, для этого необходимо внедрить табличное представление в экземпляр 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 
}

со мной у меня есть UIViewcontroller, и в нем у меня есть tableview с пользовательской ячейкой на нем. Я сопоставляю свой выход UILabel в UItableviewcell до UIViewController затем получил ошибку.

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