2009-08-28 6 views
29

Wiem, jak dostosować tabelęViewViewCell.Dostosowywanie widoku przekroju tableView - iPhone

Widziałem wiele aplikacji dostosowujących tableView Cell.

Podobnie, chcę, aby dostosować tableView sekcji nagłówka

„Przypuśćmy - Nazwa sekcja powinna być w innej czcionki, ma różne obrazy tła itd.”

Czy to możliwe Jak?

W której metodzie należy wprowadzić kod?

+2

+1 za miłą pytanie. :) – mAc

Odpowiedz

60

Zamiast normalnej metody

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

Chcesz realizować to jedno:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

Jak widać, drugi zwraca UIView zamiast tylko ciąg tekstu. W związku z tym możesz dostosować swój widok (z etykietami itp.) I zwrócić go.

Oto przykład tego, jak można to zrobić (mają być realizowane w powyższej metody):

// create the parent view that will hold header Label 
UIView* customView = [[[UIView alloc] initWithFrame:CGRectMake(10,0,300,60)] autorelease]; 

// create image object 
UIImage *myImage = [UIImage imageNamed:@"someimage.png"];; 

// create the label objects 
UILabel *headerLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 
headerLabel.backgroundColor = [UIColor clearColor]; 
headerLabel.font = [UIFont boldSystemFontOfSize:18]; 
headerLabel.frame = CGRectMake(70,18,200,20); 
headerLabel.text = @"Some Text"; 
headerLabel.textColor = [UIColor redColor]; 

UILabel *detailLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; 
detailLabel.backgroundColor = [UIColor clearColor]; 
detailLabel.textColor = [UIColor darkGrayColor]; 
detailLabel.text = @"Some detail text"; 
detailLabel.font = [UIFont systemFontOfSize:12]; 
detailLabel.frame = CGRectMake(70,33,230,25); 

// create the imageView with the image in it 
UIImageView *imageView = [[[UIImageView alloc] initWithImage:myImage] autorelease]; 
imageView.frame = CGRectMake(10,10,50,50); 

[customView addSubview:imageView]; 
[customView addSubview:headerLabel]; 
[customView addSubview:detailLabel]; 

return customView; 

nadzieję, że pomoże

+1

Jeśli twoja tabela ma na przykład dwie sekcje, jak powinieneś odwołać się do tej drugiej sekcji tabeli, więc nagłówek sekcji 1 miałby inny nagłówek.Leklowy.tekst niż nagłówek 2? – iamtoc

+1

Według liczby całkowitej, która została przekazana do metody. –

+2

Co jeśli chcę mieć tylko nagłówek dla sekcji = 1, a nie dla sekcji = 0? Mam problem z tym problemem ... – jsetting32