2011-12-20 3 views
53

Для лучшего повторного использования я хочу создать представление таблицы вне моей раскадровки.Prototype Cells in a nib вместо раскадровки

Теперь, когда я создаю ViewController на основе UITableView с Nib в Xcode, я получаю таблицу TableView по умолчанию в файле nib. Тем не менее, я не могу в Interface Builder добавлять прототипы ячеек, как я на своем раскадровке.

В настоящее время невозможно добавить прототип клеток в наконечник или я что-то упускаю.

Большое спасибо за любую помощь.

+1

В дополнение к правильному ответу выше я бы назвал большое подробное решение для этого случая. - [Ссылка на StackAnswer] (http://stackoverflow.com/a/10298648/1698467) (с помощью 'UITableView: registerNib: forCellReuseIdentifier:' и 'tableView: cellForRowAtIndexPath:' с '.xib'-файлами) – skywinder

+0

Этот вопрос/Ответ немного запутанный для меня. Я пришел сюда, чтобы найти способ использовать ячейки прототипа в представлении таблицы при определении вида таблицы в xib. Это вполне возможно в раскадровке да, но как-то внутри xib просто нет такой возможности. – Jonny

ответ

91

IOS 5 включает в себя новый метод на UITableView: registerNib:forCellReuseIdentifier:

Чтобы использовать его, положить UITableViewCell в СИБЕ. Он должен быть единственным корневым объектом в nib.

Вы можете зарегистрировать наконечник после загрузки tableView, а затем, когда вы вызываете dequeueReusableCellWithIdentifier: с идентификатором ячейки он вытащит его из наконечника, как если бы вы использовали ячейку прототипа Storyboard.

+1

Фантастический - я просто задавался вопросом, как это сделать, обыскал здесь, увидел ваш ответ, а затем увидел, что мой (который оказывается неправильным!) Был принятым ответом. Besi, вы должны принять это вместо этого. – jrturton

+0

@jrturton Спасибо за Heads-Up – Besi

+2

Есть ли способ установить владельца файла этих ячеек контроллером, из которого они зарегистрированы? – nicktmro

1

В Swift 4:

  1. Создать новый CocoaTouch класс, Подкласс от UITableViewCell.
  2. Важно - Установите флажок «Кроме того, создать XIB файл» который создает Swift файл и файл .xib
  3. Добавить метки в XIb, как вы могли бы сделать для ячейки прототипа в раскадровке
  4. Подключение выходов этикетки к новому быстрому файлу
  5. Важной - Регистрация файлу острие в viewDidLoad

    yourTableview.register(UINib.init(nibName: "CustomCellTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell") 
    

    (или)

    yourTableview.register(UINib(nibName: "CustomCellTableViewCell", bundle: Bundle.main), forCellReuseIdentifier: "Cell") 
    
  6. Реализовать источник данных и делегатов, как нормальный и typecaste к CustomCell в cellForRowAtIndexPath.