Ionic2 通过单击按钮从一个选项卡导航到另一个选项卡时设置活动选项卡
我已经为此挣扎了一段时间了。我试图导航到一个选项卡(比如说Ionic2 通过单击按钮从一个选项卡导航到另一个选项卡时设置活动选项卡,ionic2,ionic3,Ionic2,Ionic3,我已经为此挣扎了一段时间了。我试图导航到一个选项卡(比如说Home)到另一个选项卡(比如说About)。我能够导航到页面get被添加到导航堆栈中,但它不会更改活动选项卡。或者我们使用选择来设置活动选项卡,这意味着我失去了导航堆栈。以下是后一个选项代码: export class HomePage implements OnInit { tab: Tabs; constructor(public navCtrl: NavController) { this.tab = this
Home
)到另一个选项卡(比如说About
)。我能够导航到页面get被添加到导航堆栈中,但它不会更改活动选项卡。或者我们使用选择来设置活动选项卡,这意味着我失去了导航堆栈。以下是后一个选项代码:
export class HomePage implements OnInit {
tab: Tabs;
constructor(public navCtrl: NavController) {
this.tab = this.navCtrl.parent;
}
navigate() {
this.tab.select(1);
}
但这意味着,如前所述,我丢失了导航堆栈,无法使用后退按钮,如果我使用push
,将显示后退按钮。当我使用.push()
时,这就引出了另一个选项:
活动选项卡不会更改,但仍将Home
显示为活动选项卡,即使我们已成功导航到About
选项卡
因此,我希望在单击按钮从主页转到关于时,同时选择“后退”按钮和活动选项卡(About
)。这是一个带有push
选项的演示,您可以看到活动选项卡没有改变:
附言:我看了这个问题,但它对我没用:
我使用的是爱奥尼亚3,这样做是默认行为。当您选择一个选项卡时,它将清除导航堆栈并将根目录设置为另一页。当您在主页
页面中推送关于
页面时,您在主页
导航堆栈中推送一个新页面,这就是为什么它不会改变,也不应该改变的原因
使用制表符的原因是,您可以按照正确的类别对内容进行分段和划分。更新产品时,您不会让用户看到,例如,产品的同一堆栈中的账单信息,因为它不属于该类别
.select()
方法(您已经在主页.ts
中实现了该方法)是最接近您的方法,您可以在不单击特定选项卡的情况下选择选项卡
你可以做的只是从一个标签中删除about
,然后将其按入home
或删除从主页转到about页面的按钮,因为已经有了这个标签
在任何情况下,你想做的是一个错误,爱奥尼亚团队消除了人们所做的可能性
希望这对您有所帮助。我不认为tabs组件就是这样工作的。使用选项卡式导航,您可能有n个导航堆栈(其中n是您拥有的不同选项卡的数量),这意味着如果您.push()
导航堆栈上的新页面,您可以将其推到当前所选选项卡的堆栈上
切换到另一种选项卡类型与从新根开始相同,您从初始页面([root]=“yourFirstPage”
)开始,然后可以将新页面添加到此特定导航堆栈(您可以使用“后退”按钮将其从导航堆栈中弹出)
在您的特定示例中,您正在尝试.push()
主页堆栈上的关于页面,并希望NavController知道您打算切换到另一个堆栈,并将新页面推送到新堆栈
解决此问题的一个方法是在使用时始终记住上一个选项卡。选择()
并在使用的导航栏中手动显示后退按钮。单击时选择(上一个选项卡)
我希望这能让你更清楚。非常感谢你的回答。感谢您确认这是有意的,我想知道我是否只需要破解它,或者是否真的有不需要破解就可以完成的事情。但非常感谢,我现在可以不再疑惑了:P很难选择接受哪个答案。这一次,我选择了大卫的答案,因为他提出了一个解决方案。在我的情况下,我可以安全地使用黑客,但在许多情况下,这是不安全的,可以理解!但是谢谢你,给你一个礼物:)当然谢谢!是的,我认为这是默认行为,只是想知道我是否可以用一些“神奇的代码”(呵呵)来做些什么,而不是“破解”。我甚至不会说这是一种破解,你只是在使用公开的API来构建一个“选项卡切换器”:-)
this.navCtrl.push(About)