- 自退出登陆返回到登陆页面或者切换账号需要从APP返回到登陆页面时,有这么几种方法
//方法1
logOut() {
this.modalCtrl.create(LoadingPage).present();
}
//之前一直用的这个方法,但是今天发现这样返回登陆页面时,再登陆后进入扫码界面的时候,扫码界面的背景会显示登陆页面,这个BUG决定了我在这里不能使用这种方法退出
//方法2
logOut() {
this.app.getRootNav().setRoot("LoadingPage");
}
//这个方法返回后有BUG,tabs会显示在登陆页面上,所以实际上这个方法是不行的
//方法3
logOut() {
this.navCtrl.push(LoadingPage);
}
//跳转到登陆页面去,这个方法很明显不行, 因为安卓物理返回键会退回到APP内,但是有一个方法解决,就是改写登陆页面的物理返回键的返回事件,我一度想这样做,但是没实现(技术有限),另外这样返回需要清缓存
- 完美解决问题的方法4
//在tabs.ts页面添加下面代码
import { NavController, NavParams, Tabs, Events } from 'ionic-angular';
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public events: Events,
private nav: NavController
)
{
}
ionViewDidLoad() {
this.listenEvents();
// console.log('界面创建');
}
ionViewWillUnload() {
this.events.unsubscribe('toLogin');
// console.log('界面销毁');
}
listenEvents() {
this.events.subscribe('toLogin', () => {
this.nav.setRoot(LoadingPage);
// this.nav.pop(); 使用这种方式也可以,但是会在登录框中默认填上值
// console.log('返回登录');
});
}
//返回的事件这样写
logOut() {
this.events.publish('toLogin');
}
- 顺便记载一下退出APP
import { NavController, AlertController, Platform, Events } from 'ionic-angular';
logExit(){
this.alertCtrl.create({
title: '确认退出软件?',
buttons: [{text: '取消'},
{
text: '确定',
handler: () => {
this.platform.exitApp(); //退出APP回手机界面
}
}
]
}).present();
}
- 参考资料: Ionic3新页面去除Tabs的菜单问题总结
网友评论