1

我正在尝试将面板项目添加到具有卡片布局的主面板中,该卡片布局最初包含一个面板。在一个事件(点击)之后,我动态地构建了一个新面板并将其添加到主面板,之后我尝试通过 setActiveItem 将新面板项设置为活动面板项

在 Android 上一切正常,但在 iPhone 上不行。

正是我有这个app.js:

Ext.Loader.setConfig({enabled: true});
Ext.setup({
viewport: {
    autoMaximize: false
},
onReady: function() {
    var app = new Ext.Application({
        name: 'rpc',
        appFolder: 'app',           
        controllers: ['Home'],
        autoCreateViewport: false,
        launch: function () {
            Ext.create('Ext.Panel',{
                fullscreen: true,           
                layout: {
                    type : 'card',
                    animation:{
                        type:'slide'
                        ,duration :3000
                    }
                },
                defaults: {     /*definisce le caratteristiche di default degli elementi contenuti..??*/
                    flex: 1
                },
                items:[{
                    title: 'Compose',
                    xtype: 'griglia'
                }]
            });
        }
    });
}
});

在我的控制器中

            .....
        .....
        var grigliaPan=button.up('griglia');
        var mainPan=grigliaPan.up('panel');

        var html=
            '<img src="img/'+segnoScelto+'_big.png" />'
            +'<h1>'+segnoScelto+'</h1>'
            +'<p>'+previsione+'</p>'
            +'</br></br>';
        if (typeof mainPan.getComponent(1) == 'undefined'){
                        var previsioPan = Ext.widget('previsio');
                        previsioPan.setHtml(html);

                        //here i create a button for going home panel
                        var backButton=new Ext.Button({
                            ui  : 'decline',
                            alias: 'widget.backbutton',
                            text: 'Home Page',
                            width : 150,
                            height:100
                        })

                        previsioPan.add(backButton);
                        var it=mainPan.getItems();
                        alert (it['keys']);     //this prints : ext-griglia-1
                        mainPan.add(previsioPan);
                        var it=mainPan.getItems();
                        alert (it['keys']);     //this prints : ext-griglia-1,ext-previsio-1
                        //
        }
        mainPan.getLayout().setAnimation({type: 'slide', direction: 'left', duration:1000});
        //mainPan.setActiveItem(1);
        var pree=mainPan.getAt(1);
        //pree.show();
        //mainPan.setActiveItemm(pree);
        mainPan.setActiveItem('ext-previsio-1');

setActiveItem() 的三种形式适用于 Android,适用于 iPhone。有人可以告诉我什么是设置在 iphone 上动态添加的新活动项目的正确方法吗?

问题不应该出在 add() 函数上,因为我可以通过 add() 之后在主面板中添加的 getItems() 看到新项目。

4

1 回答 1

0

通过下面的代码你可以理解 thisCell 是在创建 thisRow 之后添加的。

var thisRow = new Ext.Panel({ 
                 layout: { type: 'hbox', align: 'stretch', pack: 'center' },
                 id: 'row' + (rowCount + 1), 
                 defaults: { flex: 1 } 
              });

        // Now we need to add the cells to the above Panel:
var thisCell = new Ext.Panel({
             cls: 'dashboardButton',
                 layout: { type: 'vbox', align: 'center', pack: 'center' },
         items: [{
                      xtype: 'image',
                      src: 'some image url',
                      height: '70px',
                      width: '100px',
                 }]
               });
thisRow.add(thisCell);

希望这将帮助您实现所需的输出...

于 2012-04-27T10:37:12.287 回答