2011-07-12 15 views
16

Stopka widoku mojej tabeli to widok, który pokazuje tweety od użytkownika, więc nie znam jego wysokości, dopóki nie dostałem tweetów, stworzyłem FooterViewController, który ma metodę refreshTweets dodam go w viewDidLoad:UITableView: zmiana rozmiaru widoku stopki programowo nie działa

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

w metodzie refreshTweets czytałem tweets i obliczyć całkowitą wysokość, a widok (stopce) zresetować 's wysokość:

self.view.frame = newFrame; 

ale to nie robi sensu, wysokość stopki jest nadal wysokością, którą ustawiłem w interfejsie Builder, czy czegoś brakuje lub jakikolwiek inny sposób na zrobienie tego?

Dzięki!

edit: mogę zmienić rozmiar widoku, aby być wystarczająco małą interfejsu konstruktora, a zostanie on powiększony po obliczeniu wysokości Tweety i ustawienie view.frame, ale widok tabeli nadal myśli jego stopka posiada poprzednią wysokość, że to, że dodatkowa przestrzeń znajduje się poza widokiem tableview i widzę ją tylko wtedy, gdy przeciągam stół do góry.

Odpowiedz

39
myTable.tableFooterView = myFooterView; 

Ponownie przypisz widok stopki do tabeli. Tabela rozpozna, że ​​ma nową stopkę i ponownie tworzy układ, który musi występować dla prawidłowego rozmiaru stopki.

+1

Jeden pomocny (i bardziej gadatliwy) związek może być ten temat zmiany rozmiaru tableHeaderView ; działa również doskonale dla tableFooterView: http://davidjhinson.wordpress.com/2009/03/24/resizing-a-uitableviews-tableheaderview/ – weienw

0

Aby zmienić ramę stopki zdaniem tutaj jest prosty uszczypnąć: -

w 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 
} 
Powiązane problemy