Donc, je déconne un peu avec Ionic 2 , et je veux savoir comment désactiver le bouton Précédent pour une vue spécifique.
Ce que je fais est this.nav.Push(SomePage);
Cela fonctionne, mais la NavController
met automatiquement un bouton Précédent pour moi. Comment désactiver le bouton de retour?
NOTE: Je sais que je peux utiliser this.nav.setRoot(SomePage)
pour définir la SomePage en tant que racine et ne pas avoir de bouton Précédent, mais cela ne fournit pas l'animation utile que NavController
fait automatiquement.
EDIT: Cette question est un peu ancienne, mais elle a attiré une certaine attention. Je pense donc qu’il serait également approprié de mentionner pour référence ultérieure qu’il existe une autre raison pour laquelle vous ne souhaitez peut-être pas utiliser this.nav.setRoot
afin de pousser une page sans bouton Précédent: il efface la pile de pages préexistante. Donc, si vous vouliez toujours pouvoir revenir à la page précédente dans le code sans donner à l'utilisateur un moyen de le faire, setRoot
ne vous permettrait pas de le faire.
Option 1
Cachez-le dans la vue en ajoutant l'attribut hideBackButton
au composant ion-navbar
<ion-navbar hideBackButton="true">
<ion-title>Sub Page</ion-title>
</ion-navbar>
Option 2
Cachez-le dans la classe de page en utilisant la méthode .showBackButton(bool)
fournie par la classe ViewController
import { NavController, ViewController } from 'ionic-angular';
export class SubPage {
constructor(public navCtrl: NavController, private viewCtrl: ViewController) { }
ionViewWillEnter() {
this.viewCtrl.showBackButton(false);
}
}
Un commentaire de la Ionic Docs
Assurez-vous d'appeler cela après ionViewWillEnter pour vous assurer que le DOM a été rendu.
Remarque
J'aimerais juste ajouter que ces options ne prennent pas en compte lorsque le bouton de retour du matériel est enfoncé. Le bouton de retour du matériel est toujours susceptible de faire sortir la page active de la pile de navigation.
Ionic2 masque le bouton de menu, si vous ne vous trouvez pas sur la page racine et affiche le bouton de retour.
Comme vous l'avez dit, l'animation manque avec:
this.view.setRoot(SomePage);
Ecrivez ceci pour une animation avec "back" ou "forward":
this.nav.setRoot(SomePage, {}, {animate: true, direction: "forward"});
OK, si j'ai besoin de l'animation par défaut qui est fournie et n'est pas "en avant" ou "en arrière"?
Il y a quelques façons:
Dans votre page actuelle, écrivez:
this.nav.insert(0, SomePage).then(() => {
this.nav.popToRoot();
});
this.view.Push(SomePage);
Bon d'accord, maintenant nous devons prendre soin de voir les choses.
Notez la propriété menuIsHidden
.
export class SomePage {
// Part 2:
menuIsHidden: boolean = false;
constructor(private nav: NavController, private view: ViewController) {}
// ionic2 will call this automatically
ionViewWillEnter() {
// Part 1:
this.view.showBackButton(false);
}
}
somePage.html
<ion-header>
<ion-navbar>
<button menuToggle [hidden]="menuIsHidden">
<ion-icon name="menu"></ion-icon>
</button>
<ion-title></ion-title>
</ion-navbar>
</ion-header>
J'espère que cela aidera quelqu'un.
Vous pouvez utiliser le Property Decorator suivant dans Ionic 2.0.0-rc.6
<ion-header>
<ion-navbar hideBackButton="true">
<ion-title>
Your page title
</ion-title>
</ion-navbar>
</ion-header>
Afin d'éviter que hideBackButton
ne masque votre icône de menu, utilisez ce css dans votre app.scss
:
ion-navbar[hidebackbutton] button[menutoggle] {
display: block !important;
}
ou au cas où vous voudriez que quelque chose soit montré ou pas, changez votre sélecteur comme suit: ion-navbar[hidebackbutton].show-menu button[menutoggle]