166 votes

L'ajout d'iOS UITableView HeaderView (pas d'en-tête de section)

Je veux ajouter un en-tête de table (non en-têtes de section) comme dans l'application contacts, par exemple: enter image description here

exactement comme une étiquette à côté d'une image au-dessus de la table.

Je veux tous les sens, en défilant, je ne peux donc pas lieu de ceux de l'extérieur de la table.

Comment puis-je le faire?

245voto

peterjb Points 1391

UITableView a tableHeaderView de la propriété. Jeu de à ce point de vue, vous voulez là-haut.

L'utilisation d'un nouveau UIView comme un récipient, ajouter des étiquettes de texte et une image vue à ce nouveau - UIView, puis définissez tableHeaderView de la nouvelle vue.

Par exemple, en UITableViewController:

-(void)viewDidLoad
{
     // ...
     UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
     [headerView addSubview:imageView];
     UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)];
     [headerView addSubview:labelView];
     self.tableView.tableHeaderView = headerView;
     [imageView release];
     [labelView release];
     [headerView release];
     // ...
} 

192voto

Kirby Todd Points 4938

Vous pouvez le faire assez facilement dans Interface Builder. Il suffit de créer une vue avec une table et déposez un autre point de vue sur la table. Cela va devenir la table d'en-tête de la vue. Ajoutez vos étiquettes d'image et de ce point de vue. Voir l'image ci-dessous pour afficher la hiérarchie. View Hierarchy in Interface Builder

11voto

iansari Points 79

Vous pouvez aussi tout simplement de ne créer qu'une UIView dans Interface builder et le drag & drop de l'ImageView et UILabel (pour la faire ressembler à votre choix d'en-tête) et ensuite l'utiliser.

Une fois votre UIView ressemble à la façon dont vous le souhaitez, vous pouvez par programmation de l'initialiser à partir de la XIB et les ajouter à votre UITableView. En d'autres termes, vous n'avez pas à la conception de l'ENSEMBLE de la table de l'IB. Juste le headerView (de cette façon, la vue d'en-tête peuvent être réutilisés dans d'autres tables)

Par exemple, j'ai une coutume UIView pour l'un de mes en-têtes du tableau. L'affichage est géré par un xib fichier appelé "CustomHeaderView" et elle est chargée dans la table en-tête en utilisant le code suivant dans mon UITableViewController sous-classe:

-(UIView *) customHeaderView {
    if (!customHeaderView) {
        [[NSBundle mainBundle] loadNibNamed:@"CustomHeaderView" owner:self options:nil];
    }

    return customHeaderView;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Set the CustomerHeaderView as the tables header view 
    self.tableView.tableHeaderView = self.customHeaderView;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X