2011-09-10 4 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