Я хочу добавить к своим UITableView
несколько пользовательских заголовков разделов, я искал в Интернете и увидел, что многие люди создают подкласс UITableViewCell
и регистрируют его в качестве заголовка, это звучит как плохая практика, так как естьопределенный класс для верхних и нижних колонтитулов называется UITableViewHeaderFooterView
.
Итак, я попытался сделать это сам, я создал XIB-файл и подкласс UITableViewHeaderFooterView
- SelectedProductsSectionHeader
.
Вот как я подключил свои розетки
Вот соответствующиекод на стороне UITableViewController-
override func viewDidLoad() {
super.viewDidLoad()
let selectedProductsSectionHeaderNib = UINib(nibName: "SelectedProductsSectionHeader", bundle: nil)
tableView.register(selectedProductsSectionHeaderNib, forHeaderFooterViewReuseIdentifier: "selectedProductsHeader")
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == SectionIndex.selectedProducts{
let selectedProductsHeaderCell = tableView.dequeueReusableHeaderFooterView(withIdentifier: "selectedProductsHeader") // throws error
guard let selectedProductsHeader = selectedProductsHeaderCell as? SelectedProductsSectionHeader else { return nil }
return selectedProductsHeader
}
return nil
}
Ошибка времени выполнения:
Завершение приложения из-за необработанного исключения 'NSUnknownKeyException', причина: '[setValue: forUndefinedKey:]: этот класс являетсяне соответствует кодировке значения ключа для метки ключа. '
Поэтому я попробовал что-то другое, вместо того, чтобы установить владельца файла в свой пользовательский класс, я установил View в свой пользовательский класс, и этоработал.
У меня вопрос, почему это не сработалопо первому способу?Использую ли я владельца файла, как я должен?Если нет - как я могу его использовать?