Viste dell'intestazione della tabella in StoryBoards


191

C'è un modo per inserire una vista dell'intestazione della tabella (tableHeaderView) in StoryBoard (come facevamo in Interface Builder)?

Risposte:


349

Sembra che si trascini semplicemente un controllo nella parte superiore della vista tabella. Non mi aspettavo che fosse così facile.

Prima di cadere

Prima di cadere

Dopo la caduta

Dopo la caduta


29
Sono stato sorpreso di scoprire che è così. Ho notato nella mia implementazione che per farlo funzionare correttamente dovevo eliminare il mio codice di sezione heightForHeaderInSection: (NSInteger), altrimenti avrei finito con uno spazio extra sopra la vista stessa dell'intestazione. Inoltre, affinché questa intestazione si "attaccasse" nella parte superiore della vista tabella, ho dovuto implementare la sezione viewForHeaderInSection: (NSInteger) e restituire questa vista.
ozz,

13
Questo sembra funzionare solo se nella tabella è presente almeno una cella prototipo.
Accatyyc,

4
@cdo, puoi approfondire come sei riuscito a far sì che l'intestazione si "attaccasse" nella parte superiore della vista tabella? Ho provato a implementare ciecamente viewForHeaderInSection:e ho ricevuto un errore che diceva "Impossibile soddisfare simultaneamente i vincoli". (Vedi la mia domanda qui: stackoverflow.com/questions/14554051/... )
ryanrhee

2
Grazie, non potevo farlo fino a quando non sapevo che avrebbe funzionato, necessaria la resistenza di precisione. Avevo provato a farlo più volte ...
Dave Ross il

1
È possibile utilizzare il contorno a sinistra per eseguire il trascinamento, il che è più facile da fare rispetto al tentativo di colpire il punto esatto sopra la prima cella del prototipo, se si desidera impostare la vista dell'intestazione della tabella. Ho notato - forse un bug Xcode (5.0) - che avrebbe funzionato solo quando prima avessi spostato la vista dalla gerarchia normale; L'ho trascinato fino in fondo al contorno per quella scena. Quindi, in un secondo passaggio, ho potuto spostarlo nella vista tabella.
Daniel Schneller,

10

Puoi farlo facilmente trascinando il UIView/ UIImageViewappena sotto il UITableViewprofilo del documento (anziché il layout).

Se si tenta di trascinare nel layout invece del contorno del documento, si UITableViewCellpasserà alla gestione superiore che è frustrante!


-2

Trascinare e rilasciare una vista nella parte superiore della vista tabella funzionava solo per una dimensione dello schermo, almeno in Xcode 11. Non si adattava bene su schermi diversi.

Ho appena creato una vista e l'ho lasciata lì dietro la vista da tavolo nello storyboard. Ho creato un IBOutlet per questo:

@IBOutlet weak var audioView: UIView!

Quindi nel codice tableview ho fatto:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    return audioView
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return 142
}

Ha funzionato bene su tutte le dimensioni dello schermo.


1
La domanda riguarda la vista dell'intestazione della tabella, non le viste dell'intestazione della sezione.
R. Rincón,

@R. Rincón, dove ho menzionato un'intestazione di sezione? La sezione nei metodi è necessaria dal framework. Ogni TableView ha almeno una sezione se non lo sai. Passa alla sezione 0 Se non hai sezioni.
Badr,

Questo codice restituisce audioView per ogni sezione come intestazione di sezione. Se qualcuno lo implementa, tableView.tableHeaderView sarà nullo. Se hanno 5 sezioni, avranno cinque intestazioni di sezione. Se hanno già le intestazioni di sezione e vogliono aggiungere una vista dell'intestazione della tabella, questa risposta non li aiuta. Questo non risponde alla domanda, che menziona specificamente tableHeaderView.
R. Rincón,

È possibile specificare la vista dell'intestazione per ogni sezione con un po 'di logica all'interno del metodo. TableViews creato pensando alle sezioni. Hai sempre delle sezioni, in caso contrario, sarebbe la sezione 0. Non esiste un metodo per specificare la vista dell'intestazione senza specificare una sezione.
Badr,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.