2011-09-10 125 views
1

我有一个相当简单的Sencha Touch MVC应用程序,其中有一些由选项卡栏驱动的主标签(包含列表)。当用户点击列表项时,我使用SetActiveItem打开一个新面板。这看起来不错,但它向标签栏添加了一个图标(或空的可点击空间)。我怎样才能阻止呢?Sencha Touch SetActiveItem将图标添加到TabBar

我视:

app.views.Viewport = Ext.extend(Ext.TabPanel, { 
    fullscreen: true,         
    layout: 'card', 
    cardSwitchAnimation: 'slide', 

    initComponent: function() { 

     // put instances of cards into app.views namespace 
     Ext.apply(app.views, { 
      myList: new app.views.MyList(), 
      myDetail: new app.views.MyDetail() 
      ... 
     }); 

     //put instances of cards into viewport 
     Ext.apply(this, { 
      tabBar: { 
       dock: 'bottom', 
       layout: { 
        pack: 'center' 
       } 
      }, 
      items: [ 
      app.views.myList, 
      ... 
      ] 
     }); 
     app.views.Viewport.superclass.initComponent.apply(this, arguments);        
    } 
}); 

然后我有一个控制器上的项目自来水激发我的列表:

app.views.viewport.setActiveItem(
       app.views.myDetail, 
       options.animation 
      ); 

的面板打开,但增加的TabBar为好。

我会很感激任何指针!

回答

0

您需要做的是将myList和其他tabPanel项目的布局更改为卡布局,并在myList的上下文中调用setActiveItem。

当你直接在TabPanel上调用setActiveItem时,这是你得到的结果(另一个项目被添加到tabBar中)。 此外,您不需要在TabPanel中将布局设置为卡片,因为默认情况下它已经是卡片布局。

内部项目(例如myDetail)应该有合适的布局。

+0

感谢您的回复。我试过 myList.setActiveItem( app.views.myDetail, options.animation ); 但在列表视图中打开详细信息视图(我的意思是列表的标题面板 - 停靠的工具栏 - 仍位于顶部),而详细信息面板会滑入列表主体的位置。 我的范围错了吗? – matdar

+0

我的意思是说: app.views.myList.setActiveItem(app.views.myDetail,options.animation); – matdar

+0

尝试将包含卡布局的面板添加到tabPanel的项目中,并将该列表添加到该面板中。然后调用list.ownerCt.setActiveItem – Rubinsh

相关问题