ionic3双击返回退出应用的方法
ionic3做双击退出应用的时候按照网上大神的来,从中遇到了一些问题,用this.app.getRootNav().push(MyPage);跳转的页面无法返回,this.app.getActiveNav().pop();这个方法在新的版本中已近被移除了,最后使用另外一种返回方式this.appCtrl.getRootNav().pop();
完整代码:
1.tabs.ts文件
import{Component,ViewChild}from'@angular/core'; import{AboutPage}from'../about/about'; import{ContactPage}from'../contact/contact'; import{HomePage}from'../home/home'; import{MyPage}from'../my/my'; import{Tabs}from"ionic-angular"; @Component({ templateUrl:'tabs.html' }) exportclassTabsPage{ tab1Root=HomePage; tab2Root=AboutPage; tab3Root=ContactPage; tab4Root=MyPage; @ViewChild('mainTabs')tabs:Tabs; constructor(){ } }
2.tabs.html文件
3.app.component.ts文件
import{Component,ViewChild}from'@angular/core'; import{Nav,Platform,ToastController,App}from'ionic-angular'; import{StatusBar}from'@ionic-native/status-bar'; import{SplashScreen}from'@ionic-native/splash-screen'; import{Login}from'../pages/login/login'; import{TabsPage}from'../pages/tabs/tabs'; @Component({ templateUrl:'app.html' }) exportclassMyApp{ rootPage:any; publicbackButtonPressed:boolean=false; @ViewChild("myNav")nav:Nav; constructor(publicplatform:Platform,statusBar:StatusBar,splashScreen:SplashScreen, publictoastCtrl:ToastController,publicappCtrl:App){ platform.ready().then(()=>{ this.exitApp(); }); } exitApp(){ this.platform.registerBackButtonAction(()=>{ //控制modal、系统自带提示框 letoverlay=this.appCtrl._appRoot._overlayPortal.getActive()||this.appCtrl._appRoot._modalPortal.getActive(); if(overlay){ overlay.dismiss(); return; } letactiveVC=this.nav.getActive(); letpage=activeVC.instance; if(page.tabs){ letactiveNav=page.tabs.getSelected(); if(activeNav.canGoBack()){ returnactiveNav.pop(); }else{ returnthis.showExit(); } } if(pageinstanceofLogin){//查看当前页面是否是登陆页面 this.showExit(); return; } this.appCtrl.getRootNav().pop();//剩余的情况返回操作 }); } //双击退出函数 showExit(){ if(this.backButtonPressed){ this.platform.exitApp(); }else{ this.presentToast();//再按一次退出 this.backButtonPressed=true; setTimeout(()=>{ this.backButtonPressed=false; },2000) } } presentToast(){ lettoast=this.toastCtrl.create({ message:'再按一次退出应用', duration:2000, position:'top', }); toast.onDidDismiss(()=>{ console.log('Dismissedtoast'); }); toast.present(); } }
4.app.html文件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。