したがって、Ionic 2を少しいじっています。特定のビューの[戻る]ボタンを無効にする方法を知りたいです。
私がやっていることはthis.nav.Push(SomePage);
動作しますが、NavController
は自動的に戻るボタンをそこに配置します。戻るボタンを無効にするにはどうすればよいですか?
注:this.nav.setRoot(SomePage)
を使用してSomePageをルートとして設定し、戻るボタンを使用できないことは知っていますが、NavController
が自動的に行う便利なアニメーションは提供しません。
編集:この質問はやや古いですが、いくつかの注目を集めているので、ページをプッシュするためにthis.nav.setRoot
を使用したくない別の理由があることを将来の参照のために言及することも適切だと思います戻るボタンなし:既存のページのスタックを消去します。そのため、ユーザーにUIの方法を提供せずにコード内で前のページに戻ることができるようにしたい場合、setRoot
は許可しません。
オプション1
hideBackButton
属性をion-navbar
コンポーネントに追加して、ビューで非表示にします
<ion-navbar hideBackButton="true">
<ion-title>Sub Page</ion-title>
</ion-navbar>
オプション2
ViewController
クラスが提供する.showBackButton(bool)
メソッドを使用して、ページクラス内から非表示にします
import { NavController, ViewController } from 'ionic-angular';
export class SubPage {
constructor(public navCtrl: NavController, private viewCtrl: ViewController) { }
ionViewWillEnter() {
this.viewCtrl.showBackButton(false);
}
}
Ionic docs からのコメント
IonViewWillEnterの後に必ずこれを呼び出して、DOMがレンダリングされたことを確認してください。
注
ハードウェアの戻るボタンが押されたときにこれらのオプションが考慮されないことを追加したいと思います。ハードウェアの[戻る]ボタンは、アクティブページがナビゲーションスタックからポップする可能性があります。
ルートページにいない場合、Ionic2はメニューボタンを非表示にし、戻るボタンを表示します。
あなたが言ったように、アニメーションは次のものがありません:
this.view.setRoot(SomePage);
これを「戻る」または「進む」アニメーションで記述します。
this.nav.setRoot(SomePage, {}, {animate: true, direction: "forward"});
さて、「フォワード」または「バック」ではないデフォルトのアニメーションが必要な場合はどうすればよいですか?
いくつかの方法があります。
現在のページで、次のように記述します。
this.nav.insert(0, SomePage).then(() => {
this.nav.popToRoot();
});
this.view.Push(SomePage);
さてさて、今、私たちは物事を見ることに注意する必要があります。
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>
これが誰かの助けになることを願っています。
以下を使用できますProperty DecoratorinIonic 2.0.0-rc.6
<ion-header>
<ion-navbar hideBackButton="true">
<ion-title>
Your page title
</ion-title>
</ion-navbar>
</ion-header>
hideBackButton
がメニューアイコンを非表示にしないようにするには、app.scss
でこのcssを使用します。
ion-navbar[hidebackbutton] button[menutoggle] {
display: block !important;
}
または、どこかに表示したい場合と表示したくない場合は、セレクタを次のように変更します:ion-navbar[hidebackbutton].show-menu button[menutoggle]