通过按钮单击

时间:2017-09-04 10:58:25

标签: ionic2 ionic3

我一直在努力解决这个问题。我试图导航到一个标签(让我们说Home)到另一个标签(让我们说About)。我能够导航将页面添加到导航堆栈中,但之后它不会更改活动选项卡。那,或者我们使用select来设置活动标签,这意味着我丢失了导航堆栈。这是后一个选项代码:

export class HomePage implements OnInit {

  tab: Tabs;

  constructor(public navCtrl: NavController) {
    this.tab = this.navCtrl.parent;
  } 

  navigate() {
    this.tab.select(1);
  }

但这意味着如上所述,我丢失了导航堆栈,并且无法使用后退按钮,如果我使用push则会显示该按钮。当我使用.push()

时,这将我们带到另一个选项
this.navCtrl.push(About)

虽然我们已成功导航到Home标签,但有效标签仍无法更改,但仍会将About显示为有效标签。

所以我希望的是同时拥有' Back'当我点击按钮从About转到About时,我们会选择按钮和有效标签(Home)。这是一个带有push选项的演示,因为您可以看到有效标签不会更改:https://plnkr.co/edit/6KIL8mxfTMCsvACpiD1K?p=preview

PS。我看了这个问题,但它对我没用:Changing tabs dynamically in Ionic 2

我正在使用Ionic 3

2 个答案:

答案 0 :(得分:3)

我不认为这是标签组件的工作方式。使用选项卡式导航,您可以使用 n 导航堆栈(其中 n 是您拥有的不同选项卡的数量),这意味着您.push()上的新页面nav-stack您将其推送到当前所选选项卡的堆栈上。

切换到另一个选项卡类型与以新根开头相同,您从初始页面([root]="yourFirstPage")开始,然后可以将新页面添加到此特定导航堆栈(您可以弹出它们使用后退按钮关闭导航堆栈。

在您的特定示例中,您正尝试在{em> Home 页面的堆栈上.push() 关于页面,并期望NavController知道您打算切换到另一个堆栈以将新页面推送到新堆栈。

您的问题的一个解决方案可能是在您使用.select()并在导航栏中手动显示后退按钮时始终记住上一个标签,该导航栏在点击时使用.select(previousTab)

我希望能让你更清楚。

答案 1 :(得分:2)

这是默认行为。选择选项卡时,它会清除导航堆栈并将根目录设置为另一个页面。当您在about页面中推送home页面时,您正在推送home导航堆栈中的新页面,这就是为什么它不会更改并显示&#shoudn&# 39;改变。

使用制表符的原因是您可以按正确的类别细分和分割内容。在更新产品时,您不会让用户看到同一堆products中的结算信息,因为它不属于该类别。

.select()方法(您已在home.page.ts中实施)是您可以选择标签而不点击特定标签的最近方法。

您可以做的只是从标签中移除about并将其推入home或删除按钮以从主页转到关于页面,因为已经有标签页对此。

在任何情况下,你想要做的是一个错误,离子团队消除了人们的可能性。

希望这会对你有所帮助。