Posso creare semplice viewForHeaderInSection personalizzato in modo programmatico come di seguito. Ma voglio fare cose molto più complesse, magari la connessione con una classe diversa e raggiungere le loro proprietà come una cella TableView. Semplicemente, voglio vedere quello che faccio.Swift - Come creare viewForHeaderInSection personalizzato, utilizzando un file XIB?
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
}
C'è qualcuno da spiegare come posso creare una vista di intestazione tableView personalizzata usando xib? Mi sono imbattuto in vecchi argomenti Obj-C ma sono nuovo con il linguaggio Swift. Se qualcuno lo spiega come dettagliato, sarebbe fantastico.
1.issue: pulsante @IBAction non si collega con il mio ViewController. (fisso)
risolto con classe di base del proprietario, ViewController di File
2.issue (cliccato menù contorno sinistra.): Problema altezza Header (fisso)
Risolto aggiungendo headerView.clipsToBounds = true in viewFor HeaderInSection: metodo.
avvertimenti sui vincolithis answer solved my problems:
Quando ho aggiunto ImageView anche lo stesso vincolo altezza con questo metodo in viewController, scorrere sopra tableView righe look like picture.
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 120
}
Se uso, automaticallyAdjustsScrollViewInsets in viewDidLoad, In questo caso immagine scorre sotto navigationBar. -fixed-
self.automaticallyAdjustsScrollViewInsets = false
3.issue: Se pulsante sotto View (fisso)
@IBAction func didTapButton(sender: AnyObject) {
print("tapped")
if let upView = sender.superview {
if let headerView = upView?.superview as? CustomHeader {
print("in section \(headerView.sectionNumber)")
}
}
}
Prova a cercare qui: http://stackoverflow.com/questions/9219234/how-to-implement-custom-table-view-section-headers-and-footers-with-storyboard – Curmudgeonlybumbly
FWIW, la risposta accettata a altra domanda è una soluzione kludgy che è stata utilizzata prima che iOS offrisse funzionalità di dequeue per le visualizzazioni di intestazione/piè di pagina. – Rob