2011-08-15 16 views
2

我有一個nestedList,當用戶按下屏幕上的按鈕時出現幾個級別。當nestedList出現時,沒有後退按鈕(因爲我們在樹的頂端,所以可以理解,無處可回),而點擊列表中的項目會將您帶到後退按鈕的屏幕。第一級嵌套列表上的後退按鈕

我想添加一個返回按鈕到第一個屏幕。我已經設法做到了這一點,但不是沒有將相同的後退按鈕添加到nestedList中的每個子列表 - 這在頂層具有1個後退按鈕的效果,以及2個後退按鈕(一個完全將您帶出nestledList,另一個帶你上一級)。

任何人都可以幫我弄清楚如何在每個屏幕上有1個後退按鈕,包括關閉列表的頂層?

非常感謝

PS我使用的時刻是在每個屏幕的右上角有一個「關閉」按鈕,而不是一個骯髒的解決方法。

回答

4

我不知道你是多麼的愜意與煎茶觸摸內部的工作所以你怎麼去這樣做是高達你 -

後退按鈕是存在的,隱藏的,當嵌套列表顯示(在initComponent函數中創建的hidden: true),然後onBackTap,onItemTap和setActivePath將在其功能結束附近調用syncToolbar,這是後退按鈕在深度爲0時隱藏的位置。

So有2個地方你需要做些什麼,首先是initComponent,這很容易 - 只需在你的nestedList中實現initComponent,調用超類initComponent,然後設置ba ckButton可見

var myNestedList = new Ext.NestedList({ 
    ..., 
    initComponent: function() { 
    myNestedList.superclass.initComponent.call(this); 
    this.backButton.setVisible(true); 
    }, 
    ... 
}); 

這需要顯示它intially ..你如何小心應對固定syncToolbar的護理是由你。你可以使用Ext.override,你可以直接複製並粘貼整個syncToolbar函數到你的nestedList對象中,它也可以覆蓋它,或者你可以做你被告知永遠不會做的事情,直接編輯sencha-touch.js文件。但是你決定這樣做,你希望改變什麼是

syncToolbar: function(card) { 
    ... 
    backToggleMth = (depth !== 0) ? 'show' : 'hide'; 

    if (backBtn) { 
    backBtn[backToggleMth](); 
    if (parentNode) { 
     backBtn.setText(backBtnText); 
    } 
    } 
    ... }; 

您可以更改backToggleMth= 'show'或直接刪除所有if (backBtn {...}一起。

+0

大,幫我解決我的問題!我決定覆蓋syncToolbar和onBackTap屬性。我無法獲得您提供的initComponent代碼片段,而只是添加了MyApp.views.nestedList1.backButton.setVisible(true);在新的Ext.NestedList({...})之後;定義。 – Andy

0

在煎茶觸摸2.2,我不得不使用不同的代碼:

Ext.create('Ext.NestedList', { 
    ..., 
    listeners: { 
    initialize: function(obj) { 
     obj.getBackButton().show(); 
    }, 
    back: function(obj, node, lastActiveList, detailCardActive) { 
     switch(node.getDepth()) { 
     case 1: 
     obj.getBackButton().show(); 
     break; 
     case 0: 
     alert("wohooooooo!"); 
     break; 
     } 
    } 
    } 
}