Я могу создать простой пользовательский viewForHeaderInSection в программном виде, как показано ниже. Но я хочу сделать гораздо более сложные вещи, возможно, соединение с другим классом и достичь их свойств, таких как cellView. Просто я хочу посмотреть, что я делаю.
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if(section == 0) {
let view = UIView() // The width will be the same as the cell, and the height should be set in tableView:heightForRowAtIndexPath:
let label = UILabel()
let button = UIButton(type: UIButtonType.System)
label.text="My Details"
button.setTitle("Test Title", forState: .Normal)
// button.addTarget(self, action: Selector("visibleRow:"), forControlEvents:.TouchUpInside)
view.addSubview(label)
view.addSubview(button)
label.translatesAutoresizingMaskIntoConstraints = false
button.translatesAutoresizingMaskIntoConstraints = false
let views = ["label": label, "button": button, "view": view]
let horizontallayoutContraints = NSLayoutConstraint.constraintsWithVisualFormat("H:|-10-[label]-60-[button]-10-|", options: .AlignAllCenterY, metrics: nil, views: views)
view.addConstraints(horizontallayoutContraints)
let verticalLayoutContraint = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1, constant: 0)
view.addConstraint(verticalLayoutContraint)
return view
}
return nil
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 50
}
Можно ли объяснить, как я могу создать собственное представление заголовка таблицы TableView с помощью xib? Я столкнулся со старыми темами Obj-C, но я новичок в языке Swift. Если кто-то объяснит, как подробно, было бы здорово.
1.issue: Кнопка @IBAction не подключается к моему ViewController. (фиксированный)
Решено с владельцем файла, базовым классом ViewController (меню левой кнопки мыши).
2.issue: Проблема с высотой заголовка (исправлена)
Решено добавить headerView.clipsToBounds = true в viewForHeaderInSection: метод.
Для предупреждений ограничений этот ответ решил мои проблемы:
Когда я добавил ImageView даже такое же ограничение по высоте с помощью этого метода в viewController, он перетекает через таблицы tableView выглядит как изображение.
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 120
}
Если я использую, автоматическиAdjustsScrollViewInsets в viewDidLoad, в этом случае изображение переходит в navigationBar. -fixed -
self.automaticallyAdjustsScrollViewInsets = false
3.issue: Если кнопка находится под пунктом просмотра (исправлено)
@IBAction func didTapButton(sender: AnyObject) {
print("tapped")
if let upView = sender.superview {
if let headerView = upView?.superview as? CustomHeader {
print("in section \(headerView.sectionNumber)")
}
}
}