J'ai une application qui a une vue centrale avec deux points de vue de chaque côté de celui-ci. Je veux avoir deux boutons de barre de navigation, gauche et droite qui poussent un nouveau contrôleur de navigation sur la vue de la gauche ou de la droite. P>
Lorsque vous modifiez des vues en appuyant sur une nouvelle vue à l'aide de PushViewController: méthode de navigationController, la vue apparaît à glisser dans la droite. Comment changer cela pour glisser dans la gauche? P>
6 Réponses :
Au lieu d'utiliser un contrôleur de navigation, je voudrais simplement déplacer la vue.
Donc, chargez le contrôleur d'affichage de la manière normale, puis obtenez une poignée sur la vue, puis déplacez-la? Je devrais également changer manuellement les boutons de barre de navigation aussi bien
À droite. Chargez le contrôleur d'affichage comme normal et déplacez le courant de courant de l'écran et déplacez-vous NewView.
Cela fonctionne (vous devez remplacer le - = avec A + = =) pour glisser dans la gauche. Cependant, cela signifie manuellement tous les boutons en arrière et en avant pour chaque vue. quelle douleur.
Avez-vous une idée sur la façon de bloquer les boutons afin qu'ils soient le type "pointu" utilisé dans la navigation habituellement? (le bouton arrière)
Je n'ai trouvé aucun moyen d'obtenir les boutons pointus du contrôleur de navigation autres que l'utilisation du contrôleur de navigation ou de vos propres images.
Je ne pense pas que vous puissiez définir explicitement la direction coulissante dans UinavigationContrôleurs. Ce que vous pourriez être capable de faire est de faire la vue actuelle de la pile de navigation pour montrer la vue précédente, qui animerait de la manière dont vous voulez. Cependant, cela peut être complexe si vous souhaitez que différents contrôleurs d'affichage apparaissent en fonction de ce que vous faites sur la vue actuelle.
Si votre flux de travail n'est pas trop compliqué, vous pouvez conserver une référence sur le contrôleur de la vue précédent dans le contrôleur de vue actuel. . En fonction de ce que vous faites sur la vue actuelle (comme sélectionnez une cellule de vue de la table), vous pouvez modifier les données dont vous avez besoin dans le contrôleur de la vue précédent, puis appelez P>
[self.navigationController popViewController];
Pour obtenir le bouton "Pointy", vous devez utiliser une méthode différente.
Dans votre Appdelegate: P>
UITableViewController *first = [[RootViewController alloc] initWithStyle:UITableViewStylePlain]; UITableViewController *second = [[SomeOtherViewController alloc] initWithStyle:UITableViewStylePlain]; NSArray *stack = [NSArray arrayWithObjects: first, second, nil]; UINavigationController *nav = [[UINavigationController alloc] init]; [nav setViewControllers:stack animated:NO];
J'ai fait changer de direction d'animation lorsque nous appuyons sur ViewController.
Vous pouvez modifier le type d'animation ici [animation setsubtype: kcatranstitionfrright]; strong>
Il rend le contrôleur de visualisation précédent noir, c'est une mauvaise chose.
Vous pouvez hériter de RTLnavigationController: UinavigationController et écrasez ces fonctions.
navCon = [[RTLNavigationController alloc] init]; rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; rootViewController.contextDelegate = self; DummyViewController *dvc = [[DummyViewController alloc]init]; [navCon pushViewController:dvc animated:NO]; [dvc release]; [navCon pushViewController:rootViewController animated:NO]; [self.window addSubview:navCon.view];
à ce que Reed Olsen a dit: Vous devez connecter une touche unique, qui commence la glissière vers la même méthode et ajoutez un BOOL qui suit si la vue est affichée ou non. Tout ce que vous avez à faire est de définir l'origine correctement.
- (IBAction)slideMenuView { CGRect inFrame = [self.view frame]; CGRect outFrame = self.view.frame; if (self.viewisHidden) { outFrame.origin.x += inFrame.size.width-50; self.viewisHidden = NO; } else { outFrame.origin.x -= inFrame.size.width-50; self.viewisHidden = YES; } [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; [self.menuView setFrame:inFrame]; [self.view setFrame:outFrame]; [UIView commitAnimations]; }