2017-01-03 6 views
0

У меня есть код, который работает нормально в его контроллере. Я хотел очистить его, поэтому я добавил в виде таблицы так, чтобы он был более чистым. Я просто создал ячейки в представлении таблицы и перетащил и снял ярлык и кнопки. Однако теперь у меня есть ошибкиНе удается передать интерфейс из UIViewController в Table View (выход не может быть подключен к повторяющемуся содержимому)

Outlets cannot be connected to repeating content 

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

class CharViewController: UIViewController, BLEDelegate, MFMailComposeViewControllerDelegate, UIPickerViewDelegate, UIPickerViewDataSource, UITableViewDelegate, UITableViewDataSource { 
@IBOutlet weak var label: UILabel! 
etc etc etc 

И где единственное, что я сделал, это перетащить с моего вида на ячейку таблицы.

+0

Пожалуйста, проверьте это: http://stackoverflow.com/questions/31550519/swift-outlets-cannot-be-connected-to-repeating-content – cpatmulloy

ответ

1

Ячейки Protoype повторяются, поэтому они не будут работать. У вас есть два варианта:

1) Используйте статические ячейки. Для них требуется UITableViewController, но они не рассматриваются как повторяющийся контент (статический).

2) Создайте пользовательский UITableViewCell и подключите к нему розетку. Затем вам придется деактивировать ячейку в качестве пользовательской ячейки tableView и настроить ярлык через эту ячейку.

+0

Если я использую статику, она будет работать, если значения могут быть изменено в любое время? Например, кнопка, которая имеет значение 1, может изменять значения, и в любое время, когда значение изменяется, оно отправляет данные на внешнее устройство. Будет ли это работать? – timedwalnut

+0

Статическая ячейка должна работать так же, как опция ViewController. Это будет всего лишь один экземпляр этой метки и/или кнопки.Если вы используете tableView строго для целей форматирования, он должен работать так, как вы планируете. – rMickeyD

1

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

  • Шаг № 1 Создайте другой класс, подкласс UITableViewCell, выберите ячейку из иерархии представлений и назначить этот класс к ячейке из этого параметра так же, как вы назначаете новый класс ViewController для ViewController в Storyboard.

  • Шаг № 2 Сделайте IBOutlets в пользовательский класс клеток так же, как вы пытаетесь создать что выход в вашем UIViewController и/или в любом другом классе.

  • Шаг № 3 Для примера вы создали два IBOutlets имени cellLabel и cellImageView теперь вы можете получить доступ к этим свойствам, просто введите Отдавая свой объект клеток в то время как dequeReusableCellWithIdentifier метод, как это.

    let cell=tableView.dequeueReusableCell(withIdentifier:"YourCellIdentifier", for:indexPath) as! YourCustomCellClassName; 
    cell.cellLabel.text = "Any Thing"; 
    cell.cellImageView.image = UIImage(named: "MyImage.jpg"); 
    

Вот ссылка на изображение, которое покажет вам, как присвоение класса для вашего пользовательского ячейки прототипа. Image Is Here

+0

У меня есть подкласс. Однако у меня есть код, который делает всю передачу уже в представлении. Как передать в подкласс? – timedwalnut

+0

У меня есть фотография в конце моего ответа, которая продемонстрирует, как подключить прототип вашей ячейки к вашему пользовательскому классу. –

+0

Awesome, и я могу использовать этот шаг 3 в классе контроллера? – timedwalnut

Смежные вопросы