在我的标签页之前,我几乎没有其他常规页面,并且“< Back”总是出现在左角。
到达我的标签页时,我的标题中丢失了“< Back”。为什么?
在 Ionic2 中使用选项卡时如何恢复后退按钮?
在我的标签页之前,我几乎没有其他常规页面,并且“< Back”总是出现在左角。
到达我的标签页时,我的标题中丢失了“< Back”。为什么?
在 Ionic2 中使用选项卡时如何恢复后退按钮?
看起来这是一个错误。所以目前看来,发布到 npm 的内容是不可能的
请在此处提交问题。
http://ionicframework.com/submit-issue/
这应该是可能的,但有些东西可能已经潜入。
流星 1.2 与 barbatus:ionic2-meteor
我尝试了@Andreas Siivola所说的尝试(覆盖 ion-tabs .back-button 的 css),它确实弹出了标签页,但不幸的是它没有弹出标签的父页面(包含<ion-tabs>
),我离开了带有父导航栏和标签视图曾经所在的黑色区域。然后我可以点击父母的后退按钮,最后回到上一页。因此,我创建了自己的后退按钮,以便可以将点击事件绑定到它。在我所有标签的顶部,我有一个带有后退按钮的导航栏。
<ion-navbar primary *navbar>
<ion-button start>
<button clear light (click)="goBack()"><ion-icon name="arrow-back"></ion-icon></button>
</ion-button>
<ion-title>TabTitle</ion-title>
</ion-navbar>
然后在我的打字稿文件中,我有点击方法
goBack():void {
this.nav.rootNav.pop();
}
诀窍是获取 rootNav 并调用 pop()。这使我回到了推送包含选项卡的页面的页面。
编辑: 带有离子角 NPM 的 Meteor 1.3.2.4
我想这也适用于常规的离子应用程序。
ion-tabs ion-navbar-section ion-navbar .back-button {
display: inline-block;
}
更新:Ionic 2.0.0-rc.5 使用 css 强制显示后退按钮,您可以覆盖后退按钮单击事件并使用以下方法关闭父(选项卡)视图控制器:
this.nav.parent.viewCtrl.dismiss();
tab1.html
<ion-navbar class="force-back-button">
tab1.css
.force-back-button .back-button {
display: inline-block;
}
tab1.ts
import {OnInit, ViewChild} from '@angular/core';
import {NavController, Navbar} from 'ionic-angular';
export class TabPage implements OnInit {
@ViewChild(Navbar) navBar:Navbar;
constructor(public nav:NavController) {
}
ngOnInit() {
}
ionViewDidLoad() {
this.navBar.backButtonClick = (e:UIEvent) => {
console.log("Back button clicked");
this.nav.parent.viewCtrl.dismiss();
};
}
}
如果您执行 ionic serve 并检查您的标签页的标题,您应该会看到<ion-navbar>
element. 在该元素内,您将看到一个带有 class 的按钮back-button
。如果您检查按钮样式,您可以看到有一个类使用display: none
.
现在检查按钮所在元素的类名<ion-page>
。在我的情况下,它是routes-page
,然后制作一个.scss
文件或使用现有文件(记得将其导入app/pages/theme/app.core.scss
)
添加
.tabs-page .back-button {
display: inline-block;
}
现在你已经完成了,应该有一个可以工作的返回按钮,它会弹出标签页并让你返回上一个!
你可以这样做:
<div block button nav-pop>go back</div>
请参阅:http: //ionicframework.com/docs/v2/api/components/nav/NavPop/
这是我为我的需要所做的。导航标题不是选项卡标题,这就是我想要的:
选项卡.html
<ion-navbar *navbar primary>
<ion-title>
Unit # {{ unit.number }}
</ion-title>
</ion-navbar>
<ion-content>
<ion-tabs>
<ion-tab tabTitle="Details" tabIcon="information-circle" [root]="_unitDetails"></ion-tab>
<ion-tab tabTitle="Test" tabIcon="timer" [root]="_unitTests"></ion-tab> <ion-tab tabTitle="Tools" tabIcon="hammer" [root]="_unitTools"></ion-tab>
</ion-tabs>
</ion-content>
这样,后退按钮仍然存在并弹回上一页。
Ionic 中的导航就像一堆页面:
push
将页面放在导航上时,可以将其视为将新页面放在堆的顶部。pop
使用现有页面时,这意味着从堆栈顶部删除该页面。set
打开root
页面时,这意味着你正在清理你的堆,并简单地用那个页面创建一个新的堆。“< 返回”功能仅在新页面为 时可用pushed
,而不是在root
设置页面时可用。
要回答您的原始问题:
其他页面显示“< Back”按钮,因为导航到这些页面只是pushes
将它们放在一堆,而在选项卡的情况下,“< Back”功能可能由于setting
页面root
而不可用。
您是否可以使用 (select) 事件并调用使用 nav push 和 pop 而不是使用每个选项卡的 [root] 属性的函数?
http://ionicframework.com/docs/v2/api/components/tabs/Tab/
就像是:
<ion-tabs preloadTabs="false">
<ion-tab (select)="chat()"></ion-tab>
</ion-tabs>
和
import {Chat} from '../chat/chat';
export class Tabs {
constructor(nav: NavController){
this.nav = nav;
}
chat() {
this.nav.push(Chat);
}
}
如果有人遇到这个问题,我想我已经找到了这个世纪的主要问题。当您从“模态”或“弹出框”推送时会出现问题,因此会出现导航问题。要以正确的方式执行此操作,请从调用 popover 或 modal 的页面执行 push 或 setRoot 。这可以通过“onDidDismiss”函数轻松完成:
//Page which calls popover:
popover.create();
//Page popover: Dismiss existing popover (you may also pass a parameter)
popover.dismiss(myParameter);
//Page which calls popover: Veriry if popover was removed
popover.onDidDismiss(data => {
if(data == "something")
{
//Navigate to new page
this.nav.push(newPage)
}
});