Zum Beispiel hier ist meine benutzerdefinierte Zelle:Verwenden der contentView-Eigenschaft für eine benutzerdefinierte tableView-Zelle (die als Header übergeben wird), um zu verhindern, dass die benutzerdefinierten Attribute aufgehoben werden?
protocol SectionHeaderTableViewCellDelegate {
func didSelectUserHeaderTableViewCell(sectionHeader: SectionHeaderTableViewCell, selected: Bool, type: Type)
}
class SectionHeaderTableViewCell: UITableViewCell {
@IBOutlet weak var labelContainerView: LabelContainerView!
@IBOutlet weak var sectionTitleLabel: UILabel!
@IBOutlet weak var plusButton: UIButton!
var type: Type?
var delegate: SectionHeaderTableViewCellDelegate?
var dog: Dog?
let sections = [Type.Meals, Type.Exercise, Type.Health, Type.Training, Type.Misc]
}
extension SectionHeaderTableViewCell {
@IBAction func plusButtonPressed(sender: AnyObject) {
if let type = type {
delegate?.didSelectUserHeaderTableViewCell(self, selected: plusButton.selected, type: type)
}
}
In meinem Controller, wenn ich eine Rückkehr von header.contenView ich die gewünschten Ergebnisse des Headers bleiben an Ort und Stelle hinzufügen, aber leider ist es auf die Schaltfläche in der benutzerdefinierten zunichte macht Header verhindert, dass es aufgerufen wird. Ansonsten, wenn ich einfach nur Kopfzeile zurückgeben die Schaltfläche auf der benutzerdefinierten Header-Zelle funktioniert wie erwartet, aber die Kopfzeile bewegt sich mit der Zeile wird gelöscht, die offensichtlich unansehnlich ist und nicht was ich will.
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
guard let header = tableView.dequeueReusableCellWithIdentifier("sectionHeader") as? SectionHeaderTableViewCell else { return UITableViewCell() }
header.delegate = self
header.updateDogWithGender(dog)
header.type = header.sections[section]
header.sectionTitleLabel.text = header.sections[section].rawValue
return header.contentView
}