2009-01-12 10 views
6

Próbuję wyświetlić tabelę pełną statusów Twittera (tak, to jest zadanie Stanford Presence 2), które mają zmienne rozmiary. Mogę stosunkowo łatwo określić odpowiednią wysokość dla moich wierszy z kodem, który jest zbliżony (od accompanying lecture 9):Jaki jest najlepszy sposób na wdrożenie wielowierszowego UITableCell o zmiennej wielkości?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *) indexPath 
{ 
    NSString *text = ...; 
    UIFont *font = [UIFont systemFontOfSize:...]; 
    CGSize withinSize = CGSizeMake(tableView.width, 1000]; 
    CGSize size = [text sizeWithFont:font constrainedToSize:withinSize lineBreakMode:UILineBreakModeWordWrap]; 

    return size.height + somePadding; 
} 

próbowałem dwa podejścia (oraz kilka poprawek do obu), aby uzyskać wielu linii tekstu owijania pola tekst do mojego wiersza tabeli.

  1. Dodaj UILabel jako podrzędny do mojego niestandardowego UITableCell podklasy i ustawić właściwość numberOfLines albo obliczoną liczbę na podstawie wysokości powyżej (powiedzmy, 6) lub 0 (teoretycznie nieograniczona). numberOfLines jest ignorowany; Widzę 1 lub 2 linie i nic więcej.

  2. Dodaj UITextView tylko do odczytu jako wyeksponowanie. Ma to problem, że UITextView zjada moje przewijanie; Kończę przewijanie wewnątrz wiersza UITextView zamiast przechodzić płynnie z rzędu do wiersza. Jeśli wyłączę przewijanie w UITextView, w ogóle nie będę w stanie przewijać.

Jest to dość powszechna rzecz do zrobienia; jaki jest najlepszy sposób, aby to osiągnąć?

Odpowiedz

3

Możesz zajrzeć do właściwości userInteractionEnabled z UITextView. To powinno umożliwić przekazanie danych wejściowych do UITableView, abyś mógł przewijać.

+0

To wydaje się działać, z przewijaniem wyłączone. Myślę, że gdzieś mój UITextView nie jest uzyskiwanie odpowiedniej wielkości. –

+0

Tak, w końcu udało się uzyskać odpowiedni zestaw parametrów automatycznego modelowania, aby to działało. –

0

Podczas gry z użytkownikiemInteractionEnabled = NIE, scrollEnabled = NIE, i otrzymanie prawidłowych parametrów autosizingu ustawionych w IB działało, myślę, że przejście z UILabel z numberOfLines = 0 i tymi samymi parametrami autosizing jest ostatecznie lepszym pomysłem, dla następna osoba.

Powiązane problemy