Permettez-moi d'abord de décrire le contexte du problème. J'ai 2 UIViewController
appel AdminViewController
et ButtonReorderViewController
. AdminViewController
contiennent 1 bouton. ButtonReorderViewController
contient 1 bouton et 1 image. Bouton en AdminViewController
lié à un événement appeler goToReorderButton
. Le contenu de goToReorderButton
sont ci-dessous:Iphone: Problème de va-et-vient entre deux UIViewController
ButtonReorderViewController *buttonReorder = [[ButtonReorderViewController alloc] initWithNibName:@"ButtonReorderViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:buttonReorder]; //Add a Navigation Controller to the root view
[navController setNavigationBarHidden:TRUE];
buttonReorder = (ButtonReorderViewController *) navController;
[[buttonReorder view] setFrame:CGRectMake(0, -20, 320, 470)];
[self.view addSubview:buttonReorder.view];
J'utilise UINavigationController
pour me permettre de glisser vers la gauche et right.So je suis AdminViewController
, et je clique sur goToReorderButton
, il charge ButtonReorderViewController
. Je suis en mesure de glisser à gauche et à droite (génial !!!) Je cliquez sur le bouton ButtonReorderViewController
appel goToAdmin
, il suffit de revenir à la AdminViewController
-(void) goToAdmin{
[self.view removeFromSuperview];
}
Cependant, dès que je reviens à AdminViewController
, je Je ne peux rien cliquer du tout. Le programme ne se faufile pas, c'est juste que je ne peux pas cliquer sur le bouton du tout. si je supprime la ligne buttonReorder = (ButtonReorderViewController *) navController;
à l'intérieur goToReorderButton
, alors tout va bien. Une idée de comment résoudre ce problème?
J'ai une structure très similaire à celle que vous suggérez, juste un peu plus complexe. Disons que 'viewA' est celui que je' initWithRootViewController', puisque 'viewA' va essayer d'afficher le contenu de coredata. Disons la première vue de 'viewA', affichez l'objet 4, et il y a 8 objets, puis balayez vers la droite pour afficher le reste de l'objet. C'est pourquoi 'viewA' en tant que contrôleur UINavigation (profitez de l'affichage push et pop). Cependant, si j'essaie de passer en mode admin, je ne vais pas 'pushView', mais plutôt' addSubview', et ensuite retourner 'removeFromSuperView'.Cela fonctionne bien, mais maintenant j'ajoute un autre composant dans –
(S'il vous plaît lire ci-dessus d'abord) Le nouveau composant permet à l'utilisateur de réorganiser la position de l'objet dans la vue. Donc, dans la vue 'Admin', maintenant j'appelle' viewB' par 'addSubView: viewB'. 'viewB' a la même fonction que' viewA', donc je veux avoir la possibilité de 'pousser et pop '. Donc je veux faire 'viewB' un' UINavigationController' comme 'viewA'. Si je clique sur 'Return button', j'appelle' removeFromSuperView' pour revenir à 'Admin', cependant, dès que je reviens à la vue' Admin', je ne peux rien cliquer sur –
Comme je l'ai écrit, aucun de vos contrôleurs de vue ne devrait être un contrôleur de navigation. Vous avez UNIQUEMENT un (dans la structure suggérée) contrôleur de navigation et vous venez de pousser et de sauter vos (3) contrôleurs de vue. En passant, le bouton "retour" est intégré dans UINavigationItem qui est ajouté automatiquement en haut (l'en-tête) - vous n'avez pas besoin d'implémenter ce bouton par vous-même. Supprimez simplement la ligne '[navController setNavigationBarHidden: TRUE];' ... Consultez les exemples d'applications d'Apple. Nav. le contrôleur est utilisé presque dans chaque application d'échantillon. Et toujours de la même manière. N'essayez pas de réinventer la roue ... –