2010-08-14 3 views
0

J'ai un uiviewcontroller. il y a 2 boutons en haut de UIview.Plusieurs UIViews dans un viewcontoller?

Je veux charger 2 UIViews différents (vue réduite, largeur = 320, hauteur = 200) en bas si l'utilisateur appuie sur les boutons. J'ai uitableview dans chaque petite vue et quelques contrôles. C'est pourquoi je veux gérer chaque uiview avec ses propres contrôleurs.

Je pense que je devrais créer Uiview avec CGRect et appeler le petit uiviewcontroller quand le bouton est tapé. mais je ne sais pas comment. merci

comment puis-je gérer de petites uiviews avec leur propre uiviewcontroller et puis-je concevoir de petites uiviews avec IB?

+0

Ceci est une question légitime, pourquoi quelqu'un là-bas voter? –

Répondre

1

Ceci est certainement possible, Apple ne le recommande pas, mais pour des cas particuliers comme le vôtre, je suis d'accord, utilisez-le.

Ma méthode:

Faire les 2 vue de table contrôleurs sans fichiers sous-vue XIB, utilisez -awakeFromNib pour la configuration, plutôt que viewDidLoad, viewDidLoad ne sera pas appelé sur eux. (Attendez que l'étape suivante avant de configurer les contrôleurs pour charger vos données, vous ne pourrez pas déboguer jusqu'à ce que cette étape fonctionne)

Maintenant faites un troisième contrôleur avec xib (pas vue de la table) et ouvrez le xib. Ajoutez 2 UITableViewControllers de la bibliothèque dans la fenêtre avec le propriétaire du fichier, le premier répondeur, etc., puis dans l'inspecteur, passez au dernier onglet - changez leurs classes pour les 2 contrôleurs de vue de table personnalisés que vous avez créés. Ensuite, faites glisser 2 vues de table dans la vue principale et dans l'onglet connexions, liez le délégué et la source de données à un contrôleur pour une vue de table et répétez avec l'autre. En outre, sélectionnez les contrôleurs et connectez leur point de vue aux vues de la table.

Ensuite, vous devez aller dans le contrôleur pour la vue principale avec xib et faire des sorties pour les contrôleurs de table comme ceci:

@interface class : UIViewController { 
     UITableViewController *controller1; 
     UITableViewController *controller2; 
} 

@property(nonatomic, retain) IBOutlet UITableViewController *controller1; 
@property(nonatomic, retain) IBOutlet UITableViewController *controller2; 

il est important d'utiliser la propriété afin qu'ils soient conservés, et la section viewDidUnload, les supprime pour la gestion de la mémoire: self.controller1 = nil;

Maintenant construisez et allez, et si vous avez réussi à suivre tout cela, vous devriez avoir des vues de table de travail avec des contrôleurs, prêts à être mis en place.

+0

Je pense que vos codes ne résolvent que des vues personnalisables. il y a d'autres contrôles (boutons, s'il vous plaît relire ma question). UITableViewControllers ne me laisse pas mettre les boutons. Les boutons supérieurs doivent permuter les uiviews (les uViews sont contrôlées par leur propre contrôleur). J'espère que je le clarifierai. – tester

0

Utilisez la solution d'Alex pour configurer les références à vos vues de table (Petites tables comme vous l'avez indiqué). Ajoutez vos boutons à l'UIView de clôture, et placez le code dans vos méthodes d'action de bouton pour échanger/permuter les vues appropriées basées sur la sélection de bouton.

- (IBAction) buttonSwapViewPressed:(id) sender { 
    if (swapInView1) { 
     controller1.view.hidden = NO; 
     controller2.view.hidden = YES; 
    } else { 
     controller1.view.hidden = YES; 
     controller2.view.hidden = NO; 
    } 

Votre hiérarchie de vue ressemblerait à quelque chose comme:

UIView - Enclosing View 
    UIButton - Swap Button 
    UITableView - Table View 1 
    UITableView - Table View 2 
+0

Kenny, vous m'avez mal compris. mes smallviews contient tableview et quelques boutons. chaque smallvies a une tableview et 3 boutons dessus. quand j'appuie sur le bouton sur la vue principale, il va charger smallview1, dans la petite vue il y a 3 boutons et une tableview.when j'appuie sur les 3 boutons ils rafraîchiront la tableview.et d'autres smallview2 fonctionne même. – tester

Questions connexes