2011-08-15 15 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; 
     } 
    } 
    } 
}