2011-07-12 8 views
16

Il footer di My table view è una vista che mostra alcuni tweet da un utente, quindi non conosco la sua altezza finché non ho ricevuto i tweet, ho creato un FooterViewController che ha un metodo refreshTweets, lo aggiungo in viewDidLoad:UITableView: cambiare la dimensione del footer a livello di programmazione non funziona

FooterViewController *controller = [[FooterViewController alloc] initWithNibName...]; 
[[self tableView] setFooterView:[controller view]]; 
[controller refreshTweets]; 

nel metodo refreshTweets, ho letto i tweet e calcolare l'altezza totale, e reset vista (il piè di pagina) 's altezza:

self.view.frame = newFrame; 

ma non è così ha senso, l'altezza del footer è ancora l'altezza che ho impostato in Interface Builder, c'è qualcosa che manca o un modo alternativo per farlo?

Grazie!

edit: posso cambiare le dimensioni della fine di essere abbastanza piccolo nel costruttore di interfaccia, e sarà allargata dopo aver calcolato l'altezza tweets' e l'impostazione view.frame, ma la vista della tabella pensa ancora il suo piè di pagina ha un'altezza precedente, che è, lo spazio extra è al di fuori del tableview e posso vederlo solo se trascino il tavolo verso l'alto.

risposta

39
myTable.tableFooterView = myFooterView; 

Riassegnare la vista del footer al tavolo. La tabella riconoscerà che ha un nuovo piè di pagina e rifare qualsiasi layout necessario per la dimensione corretta del piè di pagina.

+1

Un utile (e più prolisso) collegamento potrebbe essere questo uno sul ridimensionamento della tableHeaderView ; funziona perfettamente anche per tableFooterView: http://davidjhinson.wordpress.com/2009/03/24/resizing-a-uitableviews-tableheaderview/ – weienw

0

Al fine di modificare il telaio di vista piè di pagina qui è il semplice trucco: -

In Swift: -

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


func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let footerView = UIView() 
    let footerChildView = UIView(frame: CGRect(x: 60, y: 0, width: tableView.frame.width - 60, height: 0.5)) 
    footerChildView.backgroundColor = UIColor.darkGray 
    footerView.addSubview(footerChildView) 
    return footerView 
} 
Problemi correlati