2009-04-17 3 views

Répondre

4

Vous pouvez affecter une vue transparente avec une hauteur fixe à la propriété tableHeaderView de tableView. Cela va pousser le contenu de la table vers le bas par la hauteur de la vue transparente.

Vous pouvez le faire à partir de votre viewDidLoad de UITableViewController:

// force the table down 70 pixels 
CGRect headerFrame = self.tableView.bounds; 
headerFrame.size.height = 70; 

UIView *header = [[UIView alloc] initWithFrame: headerFrame]; 
header.backgroundColor = [UIColor clearColor]; 

self.tableView.tableViewHeader = header; 

[header release]; 
+0

Cela a totalement fonctionné. Merci. – CodingWithoutComments

+0

'tableView.tableHeaderView' au lieu de' tableViewHeader' – vaughan

0

La façon la plus simple de le faire est probablement juste de modifier le cadre pour la tableview. Vous devrez obtenir une référence à la tableview dans votre contrôleur soit via un IBOutlet, soit en trouvant l'affichage dans la hiérarchie de vue ou vous pouvez changer le cadre dans Interface Builder.

Dans le code quelque chose comme:

tableView.frame = CGRectMake(0.0, 200.0, 320.0, 280.0); 

positionnerait le tableview bas de l'écran et de limiter sa hauteur - les dimensions que vous utilisez dépendra si vous aviez une barre d'onglets sur la vue et des choses comme ça.

Dans la construction d'interface, sélectionnez simplement la vue de table, puis choisissez l'inspecteur de taille (l'onglet inspecteur avec l'icône de la règle) et définissez la hauteur et le décalage y pour la déplacer dans la vue.

+0

Je ne pensais pas que vous pouviez créer une table groupée dans Interface Builder. Ai-je tort? – CodingWithoutComments

+1

La différence entre une tableView groupée et une tableView simple dans IB est juste le paramètre de style. Si vous avez modifié le paramètre de style pour le regrouper dans IB, vous pouvez interagir avec lui de la même manière que vous le faites pour une table ordinaire. Il y a quelques limitations dans mon expérience telles que les couleurs d'arrière-plan qui ne se comportent pas de la même manière pour les cellules dans des tables simples ou groupées – paulthenerd

1

Regardez le delagate à UITableView.
Vous trouverez une propriété 'heightForHeaderInSection'.

Pour la section 0, il suffit de rendre l'en-tête plus grand (la valeur par défaut est 0), il va pousser la table dans la vue.

1

Si vous déplacez la table vers le bas, vous souhaitez sans doute utiliser l'espace que vous gagnez pour ajouter des éléments de l'interface utilisateur.

À ce stade, envisagez de créer la page dans IB. Vous pouvez redimensionner la vue de la table pour être là où vous voulez et placer les éléments de l'interface utilisateur au-dessus de la table. Vous pouvez utiliser un UIViewController pour gérer la page et ajouter les méthodes de protocole UITableViewDelegate/Datasource pour que vous puissiez renvoyer UITableView à votre contrôleur de vue en tant que délégué ... vous pouvez également câbler les autres éléments de l'interface utilisateur au même contrôleur de vue.

+0

Je ne pensais pas que vous pouviez créer une table "groupée" dans Interface Builder. Corrigez-moi si je me trompe ... – CodingWithoutComments

+0

Il y a une liste déroulante pour sélectionner le style de table pour un UITableView, choisissez "groupé". Vous ne pouvez pas définir de cellules ou d'en-têtes ou quoi que ce soit dans IB, mais vous verrez visuellement qu'il s'agit d'une vue groupée. –