2009-10-28 14 views
22

ja ustawienie wysokości wiersza z moich UITableView używając następującego koduiPhone + UITableView + rząd wysokość

[tableView setRowHeight: 100.00]; 

używam jednej linii jako separatora w UITableView.

Mimo że ustawienie powyższej wysokości, wysokość wiersza nie zmienia się.

+0

Ważne, GDY ustalasz wysokość wiersza – Philip007

Odpowiedz

65

Należy wdrożyć

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

metodę delegata. i wróć tam 100.0.

+10

Ostrożnie. Pratik nie powiedział, że chce mieć wysokość w jednym rzędzie. heightForRowAtIndexPath może być kosztowny z wieloma wierszami. –

+7

Jest to odpowiednia, choć droga odpowiedź: jest jedna rzecz, której nie rozumiem. Dlaczego, do cholery, Apple nalega na knkowing the RowHeight? Dlaczego po prostu nie poprosić o wysokość rzędu z (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath i uzyskać z tego wysokość? –

+12

jeśli wszystkie komórki mają tę samą wysokość wiersza, ustawienie parametru RowHeight jest znacznie bardziej wydajne niż przy użyciu tej metody delegatów. – jasongregori

-5

nie sądzę istnieje taka metoda w UITableView ...

Zamiast tego można użyć rowHeight własności ...
spróbować tableView.rowHeight = 100;

+0

W rzeczywistości jest w UITableViewDelegate. Właściwości –

+3

to tylko łatwiejsze sposoby uzyskania dostępu do modułów Getters/Setters. wykonanie tableView.rowHeight = 100, jest dokładnie takie samo jak [tableView setRowHeight: 100]. programy pobierające/ustawiające są tworzone automatycznie podczas syntezy właściwości. – Sahil

7

Wysokość wiersza jest wypiekana w komórkach po ich pierwszym wyświetleniu.

Czy ustawiłeś UITableView # rowHeight przed ustawieniem źródła danych?
Jeśli nie, zrób to.
Jeśli z jakiegokolwiek powodu nie możesz, twoją drugą opcją jest wywołanie UITableView # reloadData po ustawieniu wysokości wiersza.

+1

To rozwiązało to dla mnie. Ustawienie opcji RowHeight * before * Ustawiłem źródło danych całkowicie naprawione. ponownie załadowano dane. Dzięki emp. – jasongregori

0

Lepszym i czystszym rozwiązaniem jest implementacja funkcji delegata (może nie najlepsza, jeśli twój UITableView ma wiele wierszy ...).

Również myślę, że UITableVieCell są UIView więc można najpierw zmienić ich wysokość ...

Delegaci są bardzo silne w iPhone Dev, tutaj UITableViewDelage:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

Można również zmienić indentForRow, displayCellForRow, heightForRow, edit stuff .....

23

Powinieneś unikać heightForRowAtIndexPath, jeśli wszystkie twoje wiersze mają podobną wysokość i użyć rowHeight własności. Zgodnie z dokumentacją:

Istnieją implikacje związane z wydajnością korzystania z tableView: heightForRowAtIndexPath: zamiast rowsHeight. Za każdym razem, gdy wyświetlany jest widok tabeli, wywołuje on tableView: heightForRowAtIndexPath: na delegacie dla każdego z jego wierszy, co może powodować znaczący problem z wydajnością w przypadku widoków tabel mających dużą liczbę wierszy (około 1000 lub więcej).

W podklasie UITableViewController można to zrobić na przykład w metodzie viewDidAppear (the UITableViewController ma odniesienie do Tableview):

self.tableView.rowHeight = 79.f; 
+0

Przykład byłby wspaniały! – Sean

3

zrobiłem tak, tutaj tableobj jest niczym UITableView obiekt w mojej aplikacji.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [tableObj setRowHeight:100.0f]; 
} 

Albo poradzić w numberOfRowsInSection: jak:

- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section { 
    [tableObj setRowHeight:100.0f]; 
    return [soandso count]; // soandso is my object 
} 

Ponieważ ustawić rowHeight przed ustawieniem źródła danych. To zadziałało dla mnie (dla równych rzędów wysokości).

+0

To działało bardzo dobrze – Suru

Powiązane problemy