Как создать и использовать файл XIB для ячейки табличного представления, а не просто использовать ячейку «в» табличном представлении в раскадровке? - PullRequest
0 голосов
/ 22 марта 2020

В обычной раскадровке представления таблиц поставляются «со» встроенными ячейками. Просто установите для «Dynami c Prototypes» значение 1 (или более):

enter image description here

Затем эти ячейки в контроллере представления используются просто с помощью

...cellForRowAt

  let cell = tableView.dequeueReusableCell(
     withIdentifier:"YourCellClassID", for: indexPath) as! YourCellClass

Где YourCellClass - это класс ячейки табличного представления,

, а строка "YourCellClassID" - это просто

"Идентификатор" установлен в Инспекторе атрибутов (в настоящее время ** 5-ая кнопка) ** раскадровки.

(Будьте осторожны, НЕ используйте «идентификатор восстановления» на 4-м * Кнопка 1023 *, инспектор идентификации, которая звучит так же, но не связана.)

enter image description here

Но что, если вы хотите использовать файл XIB ?

Вместо использования одного из прототипов "в" табличном представлении в раскадровке?

Если вы используете файл XIB, вы можете использовать одну и ту же ячейку в разных таблицы .

Как это сделать?

1 Ответ

1 голос
/ 22 марта 2020

Шаг 1, чтобы создать XIB-файл в стиле ячейки

В текущем (2020) XCode нет прямой кнопки для создания XIB-файла в стиле ячейки табличного представления.

Секрет в том,

  1. создайте «Класс касания какао», выберите UITableViewCell

  2. и ТАКЖЕ выберите «создать файл XIB»

enter image description here

enter image description here

Теперь у вас есть XIB-файл в стиле ячейки, TesteCell.xib в примере.

(не стесняйтесь удалять TesteCell.swift, если он вам не нужен.)

Шаг 2, добавьте код register#UINib в viewDidLoad

Если вы сейчас попробуете это:

let cell = tableView.dequeueReusableCell(withIdentifier: "TesteCellID", for: indexPath) as! TesteCell

На самом деле это не работает.

В viewDidLoad, Вы должны добавить

override func viewDidLoad() {
    super.viewDidLoad()
    // We will be using an XIB file, rather than just a cell "in" the table view on storyboard
    tableView.register(
        UINib(nibName: "filename without suffix", bundle: nil),
        forCellReuseIdentifier: "identifier in attributes inspector"
    )
}

В примере

override func viewDidLoad() {
    super.viewDidLoad()
    // We will be using an XIB file...
    tableView.register(UINib(nibName: "TesteCell", bundle: nil), forCellReuseIdentifier: "TesteCellID")
}

descrip

И вот как вы это делаете.

Сводка

  1. Новый файл - класс касания какао - подкласс ячейки таблицы - выберите «также создать файл XIB»

  2. В viewDidLoaed зарегистрируйте файл XIB, используя

  3. Имя файла (без суффикса) и идентификатор

  4. Вы Готово, теперь вы можете обратиться к ячейке обычным способом в dequeueReusableCell

...