2015-04-10 21 views
14

Zaktualizowałem swój kod Xcode do wersji 6.3 wraz z Swift 1.2, i dokonałem przejścia.UITableViewAutomaticDimension nie działa w Xcode 6.3

Wszystko działa oprócz dynamicznej wysokości wiersza dla widoku tabeli. Mam je na 3 zupełnie różnych widokach tabel, więc prawdopodobnie nie jest to coś, co wpływa na błąd.

ustawić wszystkie z widokiem na stole do:

tableView.rowHeight = UITableViewAutomaticDimension 

i wszystkich moich plików XIB są odpowiednio ograniczone.

Wszelkie pomysły?

+2

Czy dodać estimatedRowHeight? bez tego to nie zadziała – darren102

Odpowiedz

51

Po prostu dodałem również parametr UITableViewAutomaticDimension do estimrowforindexpath. Możesz zobaczyć, jak to działa na BEAM App (w kategorii "ludzie").

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

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return UITableViewAutomaticDimension; 
} 
+4

Tak, powinieneś podać szacunek. Dodatkowo, zgodnie z [docs] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForRowAtIndexPath :) , występują implikacje związane z wydajnością korzystania z wywołań zwrotnych zamiast właściwości 'rowHeight' i' estimatedRowHeight'. Możesz ustawić 'rowHeight' na' UITableViewAutomaticDimension', a następnie 'estimatedRowHeight' na arbitralnie oszacowaną wartość. –

3

Należy podać szacunkową wysokość wiersza.

Lepiej nie wdrażać estimatedHeightForRowAtIndexPath:, chyba że jest to konieczne.

estimatedRowHeight jest tańszy pod warunkiem można wymyślić o wartości

tableView.rowHeight = UITableViewAutomaticDimension 
    tableView.estimatedRowHeight = 30 //Provide any appropriate value 
Powiązane problemy