2012-02-10 2 views
0

Когда я перехожу между видами в приложении Sencha Touch, я вижу анимацию (слайд), затем снова отображается исходный вид (тот, который я начал). В этот момент, если я щелкнув в любом месте приложения, представление изменится на правильный новый активный элемент.Sencha Touch setActiveItem показывает анимацию, затем требуется щелчок, чтобы показать

Я использую Sencha Touch, XCode 4, iOS 5 SDK и PhoneGap 1.3.0.

Заранее благодарен!

вот код для основного окна просмотра:

plantanalyzer.views.Viewport = Ext.extend(Ext.Panel, { 
fullscreen: true, 
layout: 'card', 
cardSwitchAnimation: 'slide', 
initComponent: function() { 
Ext.apply(plantanalyzer.views, { 
      login: new plantanalyzer.views.Login(), 
      plantDetail: new plantanalyzer.views.PlantDetail(), 
      buildingList: new plantanalyzer.views.BuildingList() 
      }); 
Ext.apply(this, { 
      items: [ 
        plantanalyzer.views.login, 
        plantanalyzer.views.plantDetail, 
        plantanalyzer.views.buildingList 
        ] 
      }); 


    plantanalyzer.views.Viewport.superclass.initComponent.apply(this, arguments); 
    } 
}); 

и для ViewController:

plantanalyzer.controllers.viewController = new Ext.Controller({ 
index: function(options) { 
    plantanalyzer.views.viewport.setActiveItem(plantanalyzer.views.plantDetail, options.animation); 
}, 
show: function(options) { 
    plantanalyzer.views.viewport.setActiveItem(plantanalyzer.views.buildingList, 

options.animation); 
    } 
}); 

и это код для одного из просмотров:

plantanalyzer.views.PlantDetail = Ext.extend(Ext.Panel, { 
width: 320, 
height: 480, 
items: [ 
    { 
     xtype: 'panel', 
     html: '<img src="images/logo.jpg"/>', 
     tpl: '{name}', 
     cls: 'plantToolbar' 
    }, 
    { 
     xtype: 'button', 
     name : 'buildingSelect', 
     text: 'Select Building', 
     cls: 'standardButton', 
     listeners: { 
      'tap': function() { 
       'use strict'; 
       Ext.dispatch({ 
        controller: plantanalyzer.controllers.viewController, 
        action: 'show' 
       }); 
      } 
     } 
    }, 
    { 
     xType: 'panel', 
     cls: 'infoBoxes', 
     html: 'Efficiency (kw/ton)<br><canvas id="eff"></canvas>' 
    }, 
    { 
     xType: 'panel', 
     cls: 'infoBoxes', 
     name: 'totalTons', 
     html: 'Total Plant Tons: ' 
    }, 
    { 
     xType: 'panel', 
     cls: 'infoBoxes', 
     name: 'totalCost', 
     html: 'Real-time Plant Cost: ' 
    }, 
    { 
     xType: 'panel', 
     name: 'uodateTime', 
     cls: 'lastUpdate', 
     html: 'Last Update: ' 
    } 
    ] 
}); 

ответ

1

код выглядит хорошо в обоих разделах. Когда у меня возникли проблемы с телефонным звонком и sencha touch, я обычно обнаружил, что произошла ошибка javascript или добавлена ​​надстройка html между тегом body файла index.html. Первое, что нужно было бы открыть консоль в chrome или safari и проверить консоль javascript, чтобы определить, является ли это ошибкой JavaScript. Если вы не можете запустить его в них, я бы предложил приложение Wienre, которое предоставит вам консоль и будет написано для отладки приложений телефонной связи (wienre также позволит вам просмотреть разметку html, чтобы убедиться в ее правильности)

+0

Спасибо! Я проверю это сейчас. Я дам вам знать, что я нахожу. – kevinstueber

+0

Не повезло, проверил ошибки с Weinre, запустил все мои JS-файлы через JSLint и запустил мой index.html через HTMLlint. Нет ли каких-либо других идей? – kevinstueber

1

Проблема должна быть где-то в файлах просмотра. Код, который вы показали, верен.

+0

Спасибо, я обновил вопрос, чтобы включить пример ... – kevinstueber

0

Ну, для чего это стоит, после восстановления приложения я нашел проблему. Это был какой-то пользовательский css, который искажал приложение. В частности, ширина, которая была установлена ​​на некоторых компонентах. Надеюсь, это спасет кого-нибудь еще некоторое время и страдание.

Спасибо, Даррен и Илия за вашу помощь!

Смежные вопросы