2011-08-27 17 views
14

Używam poniżej kodu, aby stworzyć większy i bardziej czysty wygląd na zwykłym (nie zgrupowanym) UITableView. Działa dobrze, chyba że mam pusty stolik, wtedy wysokość komórki ustawia się na normalną wysokość. Mam standardową styl Separatorstyle (szare linie), więc wygląda na złą, jeśli jest pusta.Wysokość komórek widoku UITableview nie działa w pustej tabeli?

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

Każdy pomysł, jak to naprawić?

EDIT:

Znaleziony jeszcze lepsze rozwiązanie, w którym ja nawet nie wyświetlać linie jeśli stół jest „pusty” i wyświetla tekst zamiast przewodnik.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if ([dataArray count] == 0) { 
     [theTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 
     [pleaseAddStuffText setHidden:NO]; 
    } else { 
     [theTableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; 
     [pleaseAddStuffText setHidden:YES]; 
    } 
    return [dataArray count]; 
} 
+1

Przez "pustą tabelę", masz na myśli twój 'numerOfSectionsInTableView:' i/lub 'tableView: numberOfRowsInSection:' zwraca 0? –

+0

Popraw mój dobry panie. – David

+1

wtedy twoja 'tableView: heightForRowAtIndexPath:' nigdy nie powinna być wywołana, możesz ustawić punkt przerwania, aby to sprawdzić. –

Odpowiedz

33

powinien być w stanie wymusić wysokość wiersza w każdym czasie przez ustawienie rowHeight, nawet jeśli liczba wierszy jest 0.

self.tableView.rowHeight = 75.0; 

Można również ustawić go w IB.

heightForRowAtIndexPath wydaje się być wywoływane tylko wtedy, gdy komórka jest skonfigurowany w cellForRowAtIndexPath, podczas gdy jest to właściwość tableview i jest zawsze obecny.

+0

Super prosty, działa idealnie. –

+0

Działa również na NSTableView dla tych, którzy się zastanawiają. – Andrew

-1

Co masz na myśli przez pusty stolik? Jeśli pełna tabela jest pusta, zwrócona liczba sekcji dla tabeli jest pusta. Oznacza to, że nic nie zostanie pokazane na stole.

Jeśli jednak masz pustą linię tabeli = komórka tabeli, powinieneś upewnić się, że cell at indexpath zwraca coś, co wystarczy, aby umieścić puste wartości. Wtedy będziesz miał pustą linię między innymi liniami w twoim stole.

Co dokładnie jest/powinno być puste?

+0

Pusta tabela = Brak danych/komórek do wyświetlenia. Podkreślam wysokość między stylem Separatorstyle. – David

Powiązane problemy