web-dev-qa-db-fra.com

Comment personnaliser la section TableView View - iPhone

Je sais comment personnaliser la TableViewCell.

J'ai vu de nombreuses applications Personnalisation de la cellule de la TableView.

De même, je veux personnaliser l'en-tête de la section TableView

"Supposons - un nom de section doit être dans une police différente, il a des images de fond différentes, etc."

Est-ce possible comment?

Dans quelle méthode dois-je mettre en œuvre le code?

29
Sagar R. Kothari

Au lieu d'utiliser la méthode normale

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

Vous voulez mettre en œuvre celui-ci:

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

Comme vous pouvez le constater, le second retourne un UIView au lieu de Just String pour le texte. Par conséquent, vous pouvez personnaliser votre propre vue (avec des étiquettes, etc.) et le renvoyer.

Voici un exemple de la façon dont vous pourriez faire cela (à mettre en œuvre dans la méthode ci-dessus):

// 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;

J'espère que cela pourra aider

60
h4xxr