我不知道,如果你發現任何回答這個問題或解決它通過你自己的,因爲問題是很老。但是我嘗試了你想做的事情,並且我成功地獲得了結果。所以這是代碼。我嚴格遵循MVC,以便發佈需要此功能的必要文件。基本上,視圖和控制器。
Main.js含有的TabPanel
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'
}
]
}
]
}
});具有導航視圖和默認項作爲標籤面板上述
Ext.define('SO.view.Nav', {
extend: 'Ext.NavigationView',
xtype: 'nav',
config:{
fullscreen: true,
items: [
{
title: 'Default View',
xtype:'main'
}
]
}
})
Nav.js;
最後,控制器。我在控制器中處理了每個用戶交互操作。
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
推動新的視圖,讓我們你ovverride返回按鈕的行爲。我所做的只是簡單地從標籤面板拿到activeItem()
,它包含一個推動新視圖的按鈕。一旦我們獲得了activeItem,我們可以得到它的標題,該標題需要設置爲backButtnoText
。所以我遍歷導航視圖和getBackButton實例,並簡單地通過調用setText()
方法改變了後退按鈕文本。
同時,我已將事件處理程序附加到後退按鈕,因爲我們希望將導航欄標題更改爲以前的標題。所以有一次,使用輕按按鈕,我們將標題設置爲我們在上述步驟中獲得的標題。一旦你完成了任務,你可能會想要分離事件處理程序,因爲它可能會導致問題,或者我寧願說它會很好。
只是試試這個,它只是工作。
感謝您的答案 - 我會在今天晚些時候嘗試。 – Brett 2013-03-13 01:11:04
非常好,我得到了這個工作。唯一的區別是我不得不使用「value.tab.getTitle()」而不是「value.title」 - 任何想法爲什麼?我正在使用版本2.1.0 – Brett 2013-03-13 05:15:21
@Brett好吧,我也使用2.1,都給了我相同的結果。當使用'value.title'時你會出錯嗎? – SachinGutte 2013-03-13 06:21:50