首页 文章

离子3标签硬件后退按钮不会退出

提问于
浏览
1

我有一个基于super template的离子3应用程序 . 我已将根页面设置为以下内容:

<ion-tabs>
    <ion-tab [root]="tab1Root" [tabTitle]="tab1Title" tabIcon="bonfire"></ion-tab>
    <ion-tab [root]="tab2Root" [tabTitle]="tab2Title" tabIcon="search"></ion-tab>
    <ion-tab [root]="tab3Root" [tabTitle]="tab3Title" tabIcon="cog"></ion-tab>
</ion-tabs>

当我按下此页面上的硬件后退按钮时,根本没有任何反应 . 但是,当我将内容更改为其他内容时,例如:

<p>Hello</p>

然后按照我的意愿退出硬件后退按钮 .

如何在选项卡页面上使硬件返回按钮正常工作,同时保留其他页面上的工作默认行为?

4 回答

  • 0

    app.component.ts 文件中

    import { Nav, App } from 'ionic-angular';
    
    export class MyApp {
    @ViewChild(Nav) nav: Nav;
    

    然后

    platform.registerBackButtonAction(() => {
               let nav = app.getActiveNav();
               let activeView: ViewController = nav.getActive();
    
               if(activeView != null){
                 if(nav.canGoBack()) {
    
                   nav.pop();
                 }else if (typeof activeView.instance.backButtonAction === 'function')
                 {
                   activeView.instance.backButtonAction();
                 }
                 else {
    
                   nav.parent.select(0); // goes to the first tab
                 }
               }
             });
    

    希望这对您有所帮助,也不要忘记将它放在平台内 .

    在你需要关闭应用程序的respcted ts文件中写一个函数

    backButtonAction(){
      this.platfrom.exitApp();
    }
    
  • 5

    我最终需要在 app.container.ts 中执行此操作以获得所需的行为:

    platform.registerBackButtonAction(() => {
        let nav = app.getActiveNav();
        let activeView = nav.getActive();
        if (activeView != null){
            if (nav.canGoBack()) {
               nav.pop();
            } else if (nav.parent.getSelected() != nav.parent.getByIndex(0)) {
                // goes to the first tab
                nav.parent.select(0);
            } else {
                platform.exitApp();
            }
         }
    });
    
  • 0

    在选项卡页面中尝试添加 ionViewDidEnter 并尝试附加以下类,如下所示:

    ionViewDidEnter() {
                       this.platform.registerBackButtonAction(() => {
                            this.platform.exitApp();
                       });
                 }
    
  • 1

    将您的代码写在 constructor() 中,从哪个页面离开 .

    Home.ts

    constructor(
        public navCtrl: NavController,
        private platform: Platform) {
        this.platform.registerBackButtonAction(()=>{
          this.platform.exitApp();
        });
      }
    

相关问题