2008-11-26 8 views
1

J'ai une configuration de vue de table qui, en cours de clignotement, a ses sections affleurant juste en dessous de la barre d'état, au lieu de rougir contre la barre de navigation. Je ne suis pas sûr si c'est le bon comportement, mais la plupart des applications ont le droit de la section vider correctement sous la barre de navigation quand il est mis en vue.UITableView défilement sous la barre de navigation

Quelle est la bonne façon de corriger cela au lieu de réduire la taille de table de façon arbitraire?

* EDIT *

associée à un fil que j'ai créé dans Broken cell with an odd strikethrough?. Ce problème, plus le problème de "blocage cellulaire" se produit lorsque je place ma barre de navigation sur un noir translucide. Quand il est noir opaque ou normal, un tel problème n'existe pas. Je ne suis pas sûr si c'est un résultat d'autre chose dans mon code ou un problème avec le SDK.

Répondre

3

Vous semblez que les limites ne sont pas définies correctement dans IB ou que vos ressorts et entretoises ne sont pas corrects. Est-ce le niveau supérieur de UIViewController ou une sous-vue? Utilisez-vous un UINavigationController? Si vous testez l'interface dans IB, cela vous convient-il?

+0

Bonjour Ben, ma NIB ressemble à ceci: http://dl-client.getdropbox.com/u/57676/controller.png. J'ai un UINavigationController qui se trouve dans MainWindow.NIB avec son contrôleur de racine réglé là.Tout ce que j'ai fait, c'était ajouter une tableView à ma vue, un UINavigationItem, et j'espérais que ça marcherait. – Coocoo4Cocoa

+0

Y a-t-il quelque chose de propriétaire là-dedans? Si vous voulez, vous pouvez m'envoyer le code (ben à standalone dot com) et je vais jeter un coup d'oeil à elle; l'image du fichier nib n'aide pas beaucoup, hélas. –

+1

Probablement préférable d'afficher le code ici, ou, si c'est trop long, un autre site et s'y référer à partir d'ici. De cette façon, nous pouvons tous contribuer. –

0

Comme je l'ai indiqué dans l'autre article, je suspecte que la hiérarchie des vues sous UINavigationController soit perturbée. Le layoutSubviews dans la vue de contenu (qui contient la barre de navigation et votre UITableView) du UINavigationController devrait être dimensionner le UITableView de sorte qu'il ne chevauche pas la barre de navigation. Dans votre cas, j'imagine que UITableView se redimensionne par la suite ou que layoutSubviews ne connaît pas l'UITableView pour une raison quelconque et que UITableView passe sous la barre de navigation, provoquant le problème d'alignement que vous voyez.

1

J'ai eu un problème similaire et il se fixe en réglant automatiquement ce

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
0

J'ai eu le même problème sur iOS 5.1 en utilisant le code suivant:

Créer le contrôleur de navigation & ajouter une table Voir

UINavigationController *navigationController = [[UINavigationController alloc] init]; 
[navigationController setModalPresentationStyle:UIModalPresentationFormSheet]; 
[navigationController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[navigationController.navigationBar setBarStyle:UIBarStyleBlack]; 
[navigationController.navigationBar setTranslucent:TRUE]; 
[navigationController setNavigationBarHidden:NO animated:NO]; 
[self presentModalViewController:navigationController animated:YES]; 

MyTableViewController *aTableViewController = [[[MyTableViewController alloc] initWithStyle:UITableViewStylePlain] autorelease]; 
aTableViewController.navigationItem.rightBarButtonItem = buttonItem; 
[navigationController pushViewController:aboutTableViewController animated:YES]; 

Ajouter une table en-tête Vue sur la table

ATableHeaderView aTableHeaderView = [[[ATableHeaderView alloc] initWithFrame:aboutTableView.frame] autorelease]; 
[aTableHeaderView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin]; 
[aTableHeaderView sizeToFit]; 
[aTableView setTableHeaderView:aTableHeaderView]; 

dans la vue d'en-tête de la table, j'ai ajouté quelques étiquettes

UILabel *aLabel = [[[UILabel alloc] initWithFrame:CGRectMake(x,y, width, height)] autorelease]; 
[aLabel setText:aString]; 
[aLabel setAutoresizesSubviews:YES]; 
[aLabel setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 

J'ai fini avec le contenu d'en-tête de table sous la barre de navigation. Changer la barre de navigation en noir fixe le fixe. Mais ce n'est pas ce que je voulais. Après quelques essais et erreurs, j'ai supprimé la ligne:

[aLabel setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 

De la configuration de l'UILabel dans l'en-tête et le problème est résolu. J'ai un en-tête translucide et le contenu de la table est positionné correctement.

Questions connexes