2009-07-29 9 views
108

Chcę ustawić wysokość pierwszego nagłówka w moim widoku UITableView. W przypadku pozostałych nagłówków chcę, aby pozostały domyślną wysokością. Jaką wartość/stałą mogę umieścić w miejscu "someDefaultHeight" w poniższym kodzie?Domyślna wysokość nagłówka sekcji w UITableView

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0) 
     return kFirstHeaderHeight; 

    return someDefaultHeight; 
} 

Dzięki

+0

które powinny pracować – Daniel

+0

dlaczego nie spróbować różne wartości aż getone, że jesteś zadowolony z? – Daniel

+4

@Daniel - jeśli Apple kiedykolwiek zdecyduje się zmienić domyślną wartość wysokości wiersza, muszę się upewnić, że moja aplikacja nie koduje tej wartości (do dowolnej ilości). Najlepiej wyciągnąć tę informację ze stałej, jeśli jest gdzieś zadeklarowana. – rein

Odpowiedz

185

W systemie IOS 5.0 można zwrócić wartość UITableViewAutomaticDimension w większości metod delegatów. Jest na dole strony dokumentacji

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if(section == CUSTOM_SECTION) 
    { 
     return CUSTOM_VALUE; 
    } 
    return UITableViewAutomaticDimension; 
} 
+1

hmm .. Jak dla mnie 'UITableViewAutomaticDimension' zwraca' -1' (hardcoded const) i nie widzę żadnych sekcji w ogóle w moim 'UITableView'. – skywinder

+0

dlaczego 'UITableViewAutomaticDimension' pokazuje -1, gdy' NSLog' to? – S1U

+26

Działa to tylko w przypadku korzystania z obszaru: '- (NSString *) tableView: (UITableView *) tableView titleForHeaderInSection: (NSInteger) section' jeśli implementujesz tabelkę' - (UIView *) tableView: (UITableView *) tableView viewForHeaderInSection: (NSInteger) metoda sekcji, to nie działa. – SuperSaiyen

46

Od sprawdzania domyślne w mojej aplikacji to wygląda na zgrupowanych tabeli domyślnie jest wysokość 22 i non-pogrupowane tabeli domyślnie jest wysokość 10.

Jeśli zaznaczysz wartość właściwości sectionHeaderHeight na widoku tabeli, która powinna Ci powiedzieć.

+1

Dzięki ... Ciężko to zakodować. Chociaż żałuję, że nie było stałej dla tej wartości. – rein

+3

Masz je od tyłu. "UITableViewStyleGrouped" to 22, a "UITableViewStylePlain" to 10. –

+2

Nie, on ma rację; plain jest 22. – pt2ph8

-1

To powinno załatwić sprawę

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.section == CUSTOM_SECTION) 
    { 
     return CUSTOM_VALUE; 
    } 
    return [tableView rowHeight]; 
} 
+0

myślę, że masz na myśli 'return [self sectionHeaderHeight];' – TMB

+0

@TMB '[self sectionHeaderHeight];' powoduje błąd. Czy miałeś na myśli '[tableView sectionHeaderHeight];'? – jk7

24

Właściwie rade :)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if(section == 0) 
     return kFirstSectionHeaderHeight; 
    return [self sectionHeaderHeight]; 
} 
+1

Myślę, że chodziło o 'return [self.tableView sectionHeaderHeight];' lub jeszcze lepiej, 'return [tableView sectionHeaderHeight];'. Jednak oba zwracają -1 dla mnie, być może dlatego, że nie używam stalówki lub scenorysu. – jk7

2

Nie jestem pewien, co poprawną odpowiedzią jest tutaj, ale nie pojawia się 10 lub 22 za poprawna wysokość zgrupowanego widoku tabeli w iOS 5. Używam 44, na podstawie pytania o numerze this, a przynajmniej ma ono z grubsza właściwą wysokość.

5

Dla kompletności: w iOS7 + wysokość dla zgrupowanych nagłówków sekcji Styl jest 55.5 dla pierwszego i 38 dla następujących nagłówków. (mierzona DCIntrospect)

2

Aby uzyskać domyślną wysokość, daj super poradzić:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0) 
     return kFirstHeaderHeight; 

    return [super tableView:tableView heightForHeaderInSection:section]; 
} 
+0

'[super tableView: tableView heightForHeaderInSection: section];' zwraca 0 dla mnie, być może dlatego, że nie używam stalówki lub scenorysu. – jk7

+0

Działa to tylko w przypadku podklasy UITableViewController. – Wallace