2010-07-31 4 views
1

J'ai une instance de UITableView avec deux sections, la première avec une ligne et la seconde avec jusqu'à huit lignes. La deuxième section disparaît fréquemment de l'écran et l'utilisateur peut faire défiler toute la vue de la table vers le bas pour les voir à volonté.Défilement d'une section dans UITableView

Cependant, j'aimerais que la première section reste toujours visible car ses informations sont utiles. Je voudrais seulement que la deuxième section soit défilable, la première section restant stationnaire et visible.

Que suggérez-vous?

Répondre

2

Vous ne pouvez pas faire défiler chaque section séparément. Cependant, selon votre description, on dirait que votre première section n'est pas vraiment une section et devrait être un en-tête pour la deuxième section. Lorsque vous créez un en-tête pour une section, l'en-tête restera toujours visible. Pour créer une section de vue personnalisée, vous devez implémenter viewForHeaderInSection et heightForHeaderInSection définis dans le protocole UITableViewDelegate.

Voici un exemple

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
     return 60; 
} 


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
     UIView *myHeader = [[[UIView alloc] initWithFrame:CGRectMake(0,0,60,320)] autorelease]; 
     myHeader.backgroundColor = [UIColor redColor]; 
     UILabel *myLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,30,150)] autorelease]; 
     myLabel.text = @"Testing header view"; 
     [myHeader addSubView:myLabel]; 
     return myHeader; 

} 

De cette façon, vous pouvez créer une vue de table avec une section et un en-tête de cette section qui restera en vue même lorsque la table est défilée.

+0

BTW J'espère que mon code fonctionne, je l'ai écrit directement ici et non dans xcode. –

+0

OK, faites la partie supérieure de l'en-tête de la deuxième section ... Cela pourrait avoir des avantages supplémentaires. Merci pour le super article! – SK9

1

Je crains que vous ne pouvez pas faire cela avec une seule table. Toutes les sections seront défilées. Cependant, si la première section contient toujours une ligne et que vous voulez la garder en place, pourquoi la conserver dans la table? Vous pouvez le déplacer hors de la table.

Questions connexes