在新窗口完全渲染之前,钛移动navgroup.open转换

时间:2012-07-31 11:44:34

标签: ios mobile titanium

我目前正在开发iPad应用程序并遇到以下问题。

当我尝试打开一个包含一组按钮的新窗口时,这些按钮是在循环中创建的,在转换过程中只有第一个按钮可见,其余按钮将在新窗口可见后呈现。看起来很糟糕,我无法找到一种方法来“等待”滑动直到一切就绪(有点像jquery准备就绪,或者在加载DOM-Elements时回调)。

这就是我正在做的事情:

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);
});

}

那么,在完全呈现概览窗口时,有没有办法获得回调/事件?

任何提示都很受欢迎,我真的被困在这里。

提前致谢!

2 个答案:

答案 0 :(得分:4)

@Nitin是的,你是对的。

另请阅读this blog。这也非常有用并且完全描述。 我对新学习者非常有用。 Cheeers .....

答案 1 :(得分:2)

我有一个想法创建一个功能并将 overview.js 代码放入,当您点击 clicker 按钮打开 overview.js 点击Ti.App.fireEvent('loadData');之类的自定义事件,然后打开你的窗口希望这对你有所帮助。

Ti.App.addEventListener('loadData',function(e){
    callFunction(); //== call function for fill data into window 
});