2008-10-26 8 views
1

J'ai un contrôleur tabview auquel j'ai ajouté un UIViewController à chaque onglet. Je veux avoir plusieurs UIViews dans le UIViewController. Donc, dans l'implémentation de la classe UIViewController, j'ai ajouté [self.view addSubView: uiview1] et [self.view addSubView: uiview2]. Le problème est que lorsque j'utilise l'application, elle tombe en charge. Cependant, si je n'ai utilisé qu'un seul UIView et que j'ai fait: self.view = UIView1 cela fonctionnerait bien.ajouter plusieurs vues pour voir le contrôleur à l'intérieur d'un contrôleur de tabulation

Est-ce que quelqu'un sait ce qui cause le problème? Ou si je fais quelque chose de fondamentalement faux?

Répondre

3

En supposant que vous le faites par programmation, vous êtes censé créer la vue dans la méthode loadView du contrôleur de vue. Donc, vous devez faire ceci:

self.view = [[[UIView alloc] initWithFrame:someFrame] autorelease]; 

avant de le faire:

[self.view addSubview:uiview1]; 
[self.view addSubview:uiview2]; 

Sinon, self.view serait nul.

+1

Ce n'est pas vraiment vrai. Une vue de UIViewController est créée pour vous gratuitement, à condition de ne pas surcharger - (void) loadView. Ajoutez simplement les sous-vues dans - (void) viewDidLoad. – Amagrammer

+1

Je suppose que vous avez raison, même si cela va à l'encontre de la recommandation d'Apple. La documentation de UIViewContoller pour la méthode loadView indique spécifiquement que vous devez remplacer cette méthode pour initialiser vos vues lors de leur création manuelle. –

1

Il n'y a aucune raison que vous ne puissiez pas avoir plusieurs vues dans la variable membre de la vue principale de votre UIViewController. Cependant, il reste un certain nombre d'éléments sans réponse dans votre question:

  • Comment obtenez-vous view1 et view2?
  • Sont-ils des points de vente dans votre fichier XIB (utilisez-vous un fichier XIB ou créez-vous tout dans le code) ou créez-vous du code?
  • Où dans votre sous-classe UIViewController les ajoutez-vous à votre variable de membre vue?
  • Quel est le message imprimé sur la console en cas de panne?
Questions connexes