Я новичок в команде StackOverflow
и очень долго боролся с этой проблемой, надеясь, что кто-то там может помочь и указать мне в правильном направлении.Загрузка пользовательского TableViewCell из раскадровки вместо nib
Я пытаюсь сделать обычай UITableView
и пользовательский UITableViewCell
- они оба собираются вместе, чтобы сформировать пользовательский UITableView
, который я бы хотел использовать повторно для нескольких проектов. Так что я пытаюсь сделать инкапсуляцию всей обработки строки + клавиатуры и т. Д. В пользовательском UITableView
, а вид ячейки в пользовательском UITableViewCell
.
В новом StoryBoard я добавил UIViewController
и добавил UITableView
, спроектировал, как я хотел, чтобы таблица выглядела и добавляла к ней прототипную ячейку. Я разработал это с соответствующими метками, полями и ограничениями. Давайте позвоним в эту таблицу пользовательских взглядов «MyCustomTableWithCustomCell»
Итак, теперь у меня есть таблица, и я хочу использовать ее для других раскадровки.
Я нашел одно решение (спасибо StackOverflow!), Но это не совсем то, что я хотел:
- Я извлек клетку прототип из
MyCustomTableWithCustomCell
(вырезать и вставить в пустой документ Interface Builder) и сохранил его как xib. - Затем я использую это в моем обычае
UITableView
через registerNib() - я могу создать новый
UIViewController
в любой раскадровке, добавитьUITableView
, установите его классMyCustomTableWithCustomCell
и он будет делать то, что я хочу
Проблема в том, что мне не нравится, как ячейка находится в отдельном файле xib, так как она не может быть легко просмотрена через разные размеры устройства с помощью автоматического предварительного просмотра IB. Независимо от того, какой размер устройства я выбираю, он всегда выглядит одинаково. Также сложно понять, как дизайн подходит для остальной части экрана, если я не буду создавать и просматривать в Simulator каждый раз, когда я хочу что-то изменить. Я бы предпочел, чтобы дизайн ячейки мог оставаться частью прототипа TableViewCell внутри раскадровки. Тогда я мог бы легко изменить его, просмотреть по разным размерам устройств и т. Д.
Итак, мой вопрос: какой лучший способ сделать то же самое, но вместо использования xib-файла, используя ячейку Prototype Table из раскадровки как план. Или, другими словами, есть способ извлечь ячейку Prototype в Nib во время выполнения, чтобы я мог зарегистрировать ее, когда создаю свою собственную таблицу.
Например. что-то вроде:
var myTableCellNib = myStoryBoard.myViewController.myTableView.myPrototypeCell.getNib()
registerNib(myTableCellNib)
С нетерпением ждем ваших мыслей!
Спасибо, что нашли время ответить! Но на самом деле, не делал бы этого так, значит, каждый раз, когда я хочу использовать свой собственный дизайн ячеек, мне придется копировать и вставлять всю ячейку в новое представление таблицы? В то время как то, что я хочу, - это просто установить новый класс tableview для моего пользовательского класса, и все затем создается программно через наконечник (этот наконечник читается из моей раскадровки). Я хочу, чтобы дизайн ячейки таблицы был повторно использован и загружался через один источник (например, в настоящее время xib-файл, но предпочел бы из раскадровки) – swiftcoder