質問はかなり古いので、この質問に対する答えを見つけたのか、自分で解決したのかはわかりません。しかし、私はあなたがやりたいことを試し、結果を得ることができました。これがコードです。私はMVCを厳密にフォローしているので、これが機能するために必要なファイルを投稿します。基本的に、ビューとコントローラー。
TabPanelを含むMain.js
Ext.define('SO.view.Main', {
extend: 'Ext.tab.Panel',
xtype: 'main',
requires: [
'Ext.TitleBar',
'Ext.Video'
],
config: {
tabBarPosition: 'bottom',
items: [
{
title: 'Welcome',
iconCls: 'home',
styleHtmlContent: true,
scrollable: true,
html: [
"You've just generated a new Sencha Touch 2 project. What you're looking at right now is the ",
].join("")
},
{
title: 'Get Started',
iconCls: 'action',
items: [
{
xtype: 'button',
text: 'Push a new view!',
action:'push_new_view'
}
]
}
]
}
});
上記のタブパネルのようなナビゲーションビューとデフォルトアイテムを持つNav.js
Ext.define('SO.view.Nav', {
extend: 'Ext.NavigationView',
xtype: 'nav',
config:{
fullscreen: true,
items: [
{
title: 'Default View',
xtype:'main'
}
]
}
});
そして最後に、コントローラー。私はすべてのユーザーインタラクション処理をコントローラー自体で行いました。
Ext.define('SO.controller.Nav',{
extend:'Ext.app.Controller',
config:{
refs:{
views:['SO.view.Main','SO.view.Nav'],
navView:'nav',
tabView:'main'
},
control:{
tabView:{
activeitemchange:'changeTitle'
},
'button[action=push_new_view]':{
tap:'pushNewView'
}
}
},
changeTitle:function(container,value,oldValue,eOpts ){
console.log(value.title);
this.getNavView().getNavigationBar().setTitle(value.title);
},
pushNewView:function(){
var activeTabTitle = this.getTabView().getActiveItem().title;
var controller = this;
controller.getNavView().push({
title: 'Second',
html: 'Second view!'
});
controller.getNavView().getNavigationBar().getBackButton().setText(activeTabTitle);
controller.getNavView().getNavigationBar().getBackButton().on('tap',function(self){
controller.getNavView().getNavigationBar().setTitle(activeTabTitle);
});
}
}
);
ご覧のとおり、関数内で選択したタブに応じてタイトルを変更する関数を添付しましたchangeTitle
。
この関数はpushNewView
新しいビューをプッシュし、タップ時に戻るボタンの動作を確認します。私がやったことは、単純に、activeItem()
新しいビューを押すボタンを保持しているタブパネルから取得することです。activeItemを取得したら、そのタイトルを取得できます。そのタイトルをに設定する必要がありますbackButtnoText
。したがって、ナビゲーションビューとgetBackButtonインスタンスをトラバースし、setText()
メソッドを呼び出すだけで、変更された戻るボタンのテキストを変更します。
同時に、ナビゲーションバーのタイトルを前のタイトルに変更したいので、戻るボタンにイベントハンドラーをアタッチしました。したがって、一度、タップする戻るボタンを使用して、上記の手順で取得したタイトルにタイトルを戻します。問題が発生する可能性があるため、すべての作業が終了したら、イベントハンドラーをデタッチすることをお勧めします。
これを試してみてください、それはうまくいきます。