Isso se deve a um bug introduzido recentemente no Kit de ferramentas da interface do usuário: link
Uma vez que isso for corrigido, ele retornará novamente à aba selecionada anteriormente quando voltar para a página de Guias de um PageStack.
Então em uma pergunta anterior eu tentei usar o Ubuntu UI Toolkit para aninhar um PageStack dentro do componente Tabs. Parecia funcionar, mas tinha suas peculiaridades, então agora estou tentando outra opção, que em teoria deveria ter o mesmo efeito de acordo com a documentação .
No entanto, com o código abaixo, notei o seguinte: ao abrir a página3, se eu puxar a barra de ferramentas e tocar no botão Voltar, ela sempre me retornará para a guia inicial em Guias, em vez do real guia da qual a página foi carregada.
Ou seja, page3
é carregado de tab2
, mas se eu abrir a página, puxe a barra de ferramentas da parte inferior e clique em Voltar, retornarei para tab1
.
Como posso fazer com que o toque em Voltar me retorne para tab2
?
import QtQuick 2.0
import Ubuntu.Components 1.1
MainView {
id: mainView
width: units.gu(38)
height: units.gu(50)
PageStack {
id: pageStack
Component.onCompleted: push(tabs)
Tabs {
id: tabs
Tab {
id: tab1
title: "Tab 1"
page: Page {
Label {
anchors.centerIn: parent
text: "Use header to navigate between tabs"
}
}
}
Tab {
id: tab2
title: "Tab 2"
page: Page {
Button {
anchors.centerIn: parent
onClicked: pageStack.push(page3)
text: "Press"
}
}
}
}
Page {
id: page3
visible: false
title: "Page on stack"
Label {
anchors.centerIn: parent
text: "Press back to return to the tabs"
}
}
}
}
A maneira de fazer isso é definir um botão Voltar personalizado em uma barra de ferramentas atribuída à propriedade page3
tools
. Com isso, posso replicar o que o botão Voltar padrão faz em termos de voltar à raiz do PageStack e, em seguida, escolher para qual guia retornar.
ToolbarItems {
back: ToolbarButton {
action: Action {
text: i18n.tr("Back")
iconName: "back"
onTriggered: {
pageStack.pop();
// It'd be neater to use 'selectedTab', but it's read-only
tabs.selectedTabIndex = 1;
}
}
}
// [...]
}