Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic2 通过单击按钮从一个选项卡导航到另一个选项卡时设置活动选项卡_Ionic2_Ionic3 - Fatal编程技术网

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)