2009-11-13 3 views
0

J'ai un UITableView et je ne peux pas comprendre comment obtenir la bonne taille.iPhone: UITableView défilement sous la barre d'onglets

Mon application est basée sur le modèle Tab Navigator. La vue d'un onglet charge une NIB contenant un contrôleur de navigation. Le contrôleur de vue racine du contrôleur de navigation a sa classe définie sur un UITableViewController qui n'a pas de NIB correspondante. Le UITableViewController est déclaré:

@interface MyRootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> { 

Le problème est que l'affichage du tableau ne « mettre fin » au bon endroit sur l'écran. Lorsque vous faites défiler la liste vers le bas, les coupes de barre d'onglets au large près de la moitié du texte dans la dernière cellule:

alt text http://img.skitch.com/20091113-djd5ib5uktnc8gqq5e7798cqjb.png

Tous les fichiers NIB (pour la vue dans le navigateur Tab et le contrôleur de navigation) La barre inférieure doit être définie sur «Barre d'onglets» dans la section Éléments d'interface simulée.

J'ai essayé plusieurs variantes de définir un nouveau CGRect pour self.view.bounds dans les méthodes viewDidLoad de UITableViewController, avant et après l'appel à super, en vain.

Une idée de ce que je pourrais manquer, ou par où commencer à chercher?


Voici mon viewDidLoad actuel (moins quelques lignes totalement sans rapport avec):

- (void)viewDidLoad 
{ 
    self.title = @"Table View Controller"; 


    CGRect frame = self.tableView.frame; 
    NSLog(@"Frame height: %d", frame.size.height); 
    frame.size.height -=100; 
    [self.tableView setFrame:frame]; 

    [super viewDidLoad]; 

} 

bit TheCGRect ne semble rien faire, et la sortie du journal est "La hauteur du cadre: 0"

Répondre

1

essayer cette

CGRect frame = self.tableView.frame; 
frame.size.height -= 50; //play around this value 
[self.tableView setFrame:frame]; 
+0

J'ai mis ce code dans viewDidLoad et il ne semble rien faire. Chose intéressante, si je mets NSLog (@ "Hauteur du cadre:% d", frame.size.height); avant la décrémentation, il imprime 0. –

+0

ok. faites le UIView, pas le UITableView la vue principale de votre contrôleur. et ajoutez votre tableview et tabbar en tant que subViews à votre UIView principal. – Morion

+0

Je n'ai pas pu travailler sur ce projet cette semaine. Dès que j'y reviendrai, j'essaierai et je vous ferai savoir comment ça se passe. Merci de votre aide! –

0

vous devez mettre NSLog (@ "Hauteur du cadre:% f", frame.size.height); Au lieu de% d, NSLog peut imprimer un nombre autre que 0

0

Essayez de définir le cadre de la vue de la table dans viewWillAppear: les cadres ne sont toujours pas définis dans viewDidLoad.

Questions connexes