2012-06-23 21 views
9

Mam UITableView z komórki statyczne i próbuję zmienić wysokość komórki, gdy spełnia warunek. Warunki są spełnione, ale wysokości komórek się nie zmienią.Jak ustawić UITableWyświetl komórkę statyczną na niestandardową wysokość?

Kod używam jest

[self.tableView setRowHeight:10]; 

I

self.tableView rowHeight = 10; 

Żadna z nich nie zmieni wysokości wiersza komórek Czy jest jakiś inny sposób, żeby je zmienić?

+0

możliwy duplikat [różnej wysokości dla alternatywnej komórki w widoku UITableView] (http://stackoverflow.com/questions/3529246/different-height-for-alternative-cell-in-uitableview) – outis

Odpowiedz

18

Trzeba wdrożyć następujące delegata-metody w .m Twojego Tableview za:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return customTableCellHeight; 
} 

a następnie zmienić wartość customTableCellHeight:

if (condition) { 
    customTableCellHeight = 80; // or whatever 
} 

Gdy wysokość komórka tabeli musi zmienić (podobnie jak w przypadku zmiany stanu, należy zadzwonić pod numer

[self.tableView reloadData]; //This calls heightForRowAtIndexPath for all cells 
+0

To wygląda, jakby działało, dzięki – user1282180

+2

nie potrzebuje wywołania 'reloadData'. –

+2

Musisz wywołać reloadData nie wewnątrz heightForRowAtIndexPath, ale poza nią, kiedy * warunek * zmienia się. Spowoduje to ponowne obliczenie wysokości i umożliwi dynamiczne sortowanie komórek. – kgiannakakis

0

możesz użyć tego do cały wiersz tableview

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 100 
    }