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文件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。