У меня есть пользовательский вид заголовка раздела, определенный и зарегистрированный так:
class MySectionHeaderView : UITableViewHeaderFooterView {
var section : Int?
var button : UIButton?
}
class MyTableViewController : UITableViewController {
override func loadView() {
super.loadView()
self.tableView.register(MySectionHeaderView.self,
forHeaderFooterViewReuseIdentifier: "reuseIdentifier")
}
override func tableView(_ tableView: UITableView,
viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableHeaderFooterView(
withIdentifier: "reuseIdentifier")! as! MySectionHeaderView
header.textLabel?.text = titleForHeader(section: section)
header.section = section
if header.button == nil {
let button = UIButton(type: .system)
// ... configure button ... //
header.button = button
}
return header
}
}
Это работает.Однако очень странно поместить кнопку и другие инициализаторы в функцию tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView
.как это нарушает разделение интересов принципала.Эта функция предназначена только для установки меток и т. Д.
Есть ли способ инициализировать представление заголовка, создавая подэлементы где-то внутри класса MySectionHeaderView
?