2016-07-28 2 views
0

私は合金を使ったチタンプロジェクトを持っています。 次に、画面にはScrollableViewがあります。この画面を開くと、画面のすべてのビューを削除する必要がありますが、できません。ScrollableViewの明確なビュー

principal.xml

<ScrollableView id="EmisorView" onScrollend="CambioEmisor" top="10%" height="10%" width="100%" backgroundColor="#fff"> 
</ScrollableView>  

principal.js

function ConstruyoEmisores(){ 

var db = Ti.Database.open('Termolink'); 
var rows = db.execute('SELECT * FROM Regulaciones ORDER BY Regulaciones.Nombre,Regulaciones.Serie'); 

NRegistros=ComprueboRegBD(); 

for (i=0;i<$.EmisorView.views.length;i++){ 
    $.EmisorView.removeView($.EmisorView.views[i]); 
} 

var i; 

var serieenqueestoy=0; 

for (i=0;i<NRegistros;i++){ 
    TablaNombreTermostatos[i]= rows.field(2); 

    if (rows.field(0)==Serie) serieenqueestoy=i; //esto es para posicionar en el seleccionado 

    var nuevaView=Ti.UI.createView(); 

    var titulo1=Ti.UI.createLabel({ 
     id: "NombreTerm", 
     text: TablaNombreTermostatos[i], 
     color: "#b0acb1" , 
     textAlign: Ti.UI.TEXT_ALIGNMENT_LEFT, 
     left:"44%", 
     top:"33%" 
    }); 
    var imagen1=Ti.UI.createImageView({ 
     id: "Radiador",   
     image: "/figura radiador.png", 
     height: "60%", 
     left:"32%", 
     top:"20%" 
    }); 
    if (Ti.Platform.name=="iPhone OS") { 
     imagen1.left = "13%"; 
    } 

    nuevaView.add(imagen1); 
    nuevaView.add(titulo1);       

    $.EmisorView.addView(nuevaView); 

    rows.next(); 
}  

db.close(); 

$.EmisorView.scrollToView(serieenqueestoy); 

} 

私が初めてを実行すると、すべてがOKですが、別の時代にScrollableViewは、より多くの景色を眺めることができます。

スクロール可能な表示をクリアするための提案はありますか?

私は、チタン5.3.1、合金、アンドロイドとIOSで動作します。

NEW VERSION

$.EmisorView.cleanup = function() { 

$.destroy(); 
$.off(); 
//null your objects here 

}; 

function ConstruyoEmisores(){ 

var db = Ti.Database.open('Termolink'); 
var rows = db.execute('SELECT * FROM Regulaciones ORDER BY Regulaciones.Nombre,Regulaciones.Serie'); 

NRegistros=ComprueboRegBD(); 

var CuantosViews=$.EmisorView.views.length; 

for (i=0;i<CuantosViews;i++){ 
    $.EmisorView.views[parseInt(parseInt(i))].cleanup && $.EmisorView.views[parseInt(parseInt(i))].cleanup(); 
    $.EmisorView.removeView($.EmisorView.views[i]); 
    $.EmisorView.views[i]=null; 
} 

var i; 

var serieenqueestoy=0; 

for (i=0;i<NRegistros;i++){ 
    TablaSerieTermostatos[i]=rows.field(0); 
    TablaPinTermostatos[i]=rows.field(1); 
    TablaNombreTermostatos[i]= rows.field(2); 
    TablaTemperTermostatos[i]= rows.field(345); 
    TablaConsignaTermostatos[i]= rows.field(5); 
    TablaEstadoTermostatos[i]= rows.field(344); 

    if (rows.field(0)==Serie) serieenqueestoy=i; //esto es para posicionar en el seleccionado 

    var nuevaView=Ti.UI.createView(); 

    var titulo1=Ti.UI.createLabel({ 
     id: "NombreTerm", 
     text: TablaNombreTermostatos[i], 
     color: "#b0acb1" , 
     textAlign: Ti.UI.TEXT_ALIGNMENT_LEFT, 
     left:"44%", 
     top:"33%" 
    }); 
    var imagen1=Ti.UI.createImageView({ 
     id: "Radiador",   
     image: "/figura radiador.png", 
     height: "60%", 
     left:"32%", 
     top:"20%" 
    }); 
    if (Ti.Platform.name=="iPhone OS") { 
     imagen1.left = "13%"; 
    } 

    nuevaView.add(imagen1); 
    nuevaView.add(titulo1);       

    $.EmisorView.addView(nuevaView); 
    //$.EmisorView.insertViewsAt(i,nuevaView); 

    rows.next(); 
}  

db.close(); 
$.EmisorView.scrollToView(serieenqueestoy);  
} 

DEFINITIVE VERSIONを実行していない、NOW

var CuantosViews=$.EmisorView.views.length; 

for (i= CuantosViews;i>0;i--){ 
    $.EmisorView.removeView($.EmisorView.views[i-1]); 
    $.EmisorView.views[i-1]=null; 
} 

おかげですべての人々を実行します。問題は、このループが最後から開始まででなければならないことです。その後、すべてのビューを正常に削除します。

答えて

0

ScrollableViewsを削除しようとしている場合は、remove()メソッドまたはremoveAllChildren()メソッドではなくremoveView()メソッドを使用します。

これは、あなたがScrollableViewビューを削除し、クリーンアップそれらができる方法である。

if($.scrollableview.views && parseInt($.scrollableview.views.length)) for(var i = parseInt($.scrollableview.views.length); i > 0; i--) if($.scrollableview.views[parseInt(parseInt(i)-1)]) { 

    $.scrollableview.views[parseInt(parseInt(i)-1)].cleanup && $.scrollableview.views[parseInt(parseInt(i)-1)].cleanup(); 
    $.scrollableview.removeView($.scrollableview.views[parseInt(parseInt(i)-1)]); 
    $.scrollableview.views[parseInt(parseInt(i)-1)] = null; 
} 

これは、ビューの一例です: view.xml

<View id="view"> 
    <Label id="title"/> 
</View> 

view.js

$.title.text = 'test'; 

$.view.cleanup = function() { 

    $.destroy(); 
    $.off(); 
    //null your objects here 
}; 
+0

残念ですが、Ricardoは走りません。私の新しいコードを参照してください –

+0

昇順でビューを削除することはできません。あなたの質問はその権利に関するものでしたか?または私は何かを欠いている? –

0

非常に簡単な解決策は、removeAllChildrenプロパティを使用することです。あなたが唯一のビューが作成されたときに、フォーカスがビューに追加されていない機能を実行するように見える、そして、doc here

$.EmisorView.removeAllChildren(); 

を見つけることができます。だから... ... .xmlファイルでのごWindow上:

<Window onFocus="onFocusWindow" /> 

その後onFocusWindowという名前のコントローラ内で関数を作成し、そこにremoveAllChildren方法を実行します。

+0

はい私はremoveAllChildren()を使用しますが、実行しません。 –

+0

あなたは私の他のアドバイスにも従っていますか?あなたはビューを削除したい時に機能を呼びますか?それは単独では実行されません。コントローラーのルートに置くと、作成時にのみ実行されます –

+0

Reneさんに感謝しますが、新しいコードで同じ –