如何从选项卡根目录检查当前选项卡是否可以返回



TLDR:

我有我的标签的参考号

@ViewChild('tabsPage') tabRef: Tabs;

我需要获取当前选项卡的导航堆栈,检查它是否可以返回,如果需要,请返回。

完整故事:

我有一个选项卡页面,我从另一个带有自定义动画的页面到达。

当用户按下硬件后退按钮时,我的选项卡的行为必须如下所示:

  • 如果用户在选项卡0中,请返回自定义动画
  • 如果用户不在选项卡0中,请转到选项卡0
  • 如果用户已在当前选项卡中导航,请返回该选项卡的导航堆栈

为了实现这种行为,我在ionViewDidEnter()内部的选项卡根页面中使用了以下代码:

if (this.tabRef.getSelected().index == 0) {
this.navCtrl.pop({
animation: 'nav-shrink'
, direction: 'back'
})
} else {
this.tabRef.select(0);
}

问题是:当我在另一个选项卡中导航时,后退按钮不会返回到选项卡中(例如,从详细信息到列表),它会立即返回到选项卡0。

当我在任何选项卡中进一步导航时,都不会调用ionViewWillLeave(),因此我无法取消注册backButtonAction。

解决方案是检查当前选项卡是否可以返回,因此,与其转到选项卡0或从带有自定义动画的选项卡页面返回,我只需要nav.pop()当前选项卡。

https://ionicframework.com/docs/v2/api/navigation/NavController/

canGoBack()如果存在可以返回的有效前一页,则返回true。否则返回false。

显然,选项卡本身就是NavController。所以我用这种方式解决了我的问题:

if (this.tabRef.getSelected().canGoBack()) {
this.tabRef.getSelected().pop();
} else if (this.tabRef.getSelected().index == 0) {
this.navCtrl.pop({
animation: 'nav-shrink'
, direction: 'back'
})
} else {
this.tabRef.select(0);
}

相关内容

  • 没有找到相关文章

最新更新