0

私は現在iPadアプリに取り組んでおり、次の問題が発生しました。

ループで作成された一連のボタンを含む新しいウィンドウを開こうとすると、遷移中に最初のボタンのみが表示され、残りは新しいウィンドウが表示された後にレンダリングされます。ひどいように見えますが、すべてが配置されるまでスライドして「待機」する方法がわかりません(jqueryの準備ができている、またはDOM要素がロードされたときのコールバックのようなものです)。

これが私がしていることです:

clicker.addEventListener('click', function(e){    
  var overview = Ti.UI.createWindow( {
    title : "Overview",
    barColor: '#000',
    layout : 'vertical',
    url: '/views/overview.js',
    _parent: Titanium.UI.currentWindow,
    navGroup : navGroup,
    rootWindow : win1
  });

  navGroup.open(overview, {animated:true});
});

そしてoverview.jsで私は次のことをします:

var overviewdata = [/*some data*/];
for(var i = 0;i < overviewdata.length;i++){
//calculations for proper positioning
if(i == 0 || i%4 == 0){
    toppx = 30;
    leftpx = 40;
}
else
{
    leftpx += 245;
    toppx = -200;
}

overviewbttns[i] = Ti.UI.createButton({ 
    title: overviewdata[i].title,
    backgroundImage:"/images/views/button.png",
    width: 200,
    height: 200,
    left: leftpx,
    top: toppx,
    id: i
});

//add to window
win.add(overviewbttns[i]);

//attach event handler
overviewbttns[i].addEventListener('click',function(e){

    var w = Ti.UI.createWindow( {
        title : overviewdata[e.source.id].title,
        barColor: '#000',
        layout : 'vertical',
        url: "/views/"+overviewdata[e.source.id].jsfile,
        _parent: Titanium.UI.currentWindow,
        navGroup : win.navGroup,
        rootWindow : win.rootWindow        
    });

    win.navGroup.open(w);
});

}

それで、概要ウィンドウが完全にレンダリングされたときにコールバック/イベントを取得する方法はありますか?

ヒントはありがたいです、私は本当にここで立ち往生しています。

前もって感謝します!

4

2 に答える 2

4

@Nitinはい、その通りです。

このブログも読んでください。これも非常に便利で、完全に説明されています。私はこれは新しい学習者にとって非常に便利です。乾杯.....

于 2012-08-08T14:20:19.933 に答える
2

1つの関数を作成し、overview.jsコードを挿入して、overview.jsを開くためのクリッカーボタンをクリックするのようなカスタムイベントが発生し、ウィンドウが開きます。これがお役に立てば幸いです。Ti.App.fireEvent('loadData');

Ti.App.addEventListener('loadData',function(e){
    callFunction(); //== call function for fill data into window 
});
于 2012-08-03T07:19:18.433 に答える