2013-04-07 129 views
1


是否可以在钛中添加多个视图到ScrollView?所以可以说我有以下几种:Titanium一次添加多个视图到一个滚动视图?

var scrollView = Titanium.UI.createScrollView(); 
var views = []; 

var view1 = Titanium.UI.createView(); 
views.push(view1); 

var view2 = Titanium.UI.createView(); 
views.push(view2); 

scrollView.add(views); 

window.add(scrollView); 

以上是否会工作?如果不是需要做什么才能使其发挥作用?

+0

是它的工作....意见=滚动视图和所有其他子视图到您的scrollView ...并最终将其添加到窗口。 – Thalaivar 2013-04-07 03:24:57

回答

0

根据他们的documentation这应该不起作用。 (之前从未尝试过)。但是你可以做这样的事情:

views.forEach(function(view) { 
    scrollView.add(view); 
}); 
+0

你的例子确实有效。但我唯一的问题就是它效率不高。比方说,我正在循环70次以上,这会减慢电话速度,使应用程序不能很快响应。总共需要大约半分钟的时间。所以它看起来像回到了制图板,并提出了一种不同的方式来有效地做到这一点。 – camelCaseD 2013-04-07 19:17:20

+0

是的,我知道在某些情况下钛很慢。你有没有想过使用TableView?在那里你可以一次设置所有的东西。这可能会更快(尤其是如果所有“行”结构相同,例如Twitter时间轴)。 – 2013-04-07 19:21:29

+0

我一直在想,但我使用的视图是高度定制的。这将需要更多的工作和混乱来创建一个比我目前使用的“TableView”。如果我们只能创建多个线程/进程来使用。 – camelCaseD 2013-04-07 20:02:36

0

我知道这是有点晚,但其解决方案,我用了这个问题,希望它还是有帮助的。基本上,它涉及到将scrollView的不透明度设置为0,直到完成加载。这意味着,而不是一次出现1的行,它们全部同时出现,并且可以在您的程序/用户执行其他操作时在后台运行。请注意,这只是工作,如果滚动视图是空的 - 它不添加行到已有的东西在里面滚动型很好的解决方案:

var sView = Titanium.UI.createScrollView({ 
    //Whatever properties you need for your scrollView 
    opacity: 0, 
}); 

//childViews is an array of all the stuff you'd like to add to sView 
childCount = childViews.length 

//Add a postlayout event to the last childView - this will automatically set the opacity to 1 when the last child is loaded 
childViews[childCount - 1].addEventListener('postlayout', function showScrollView(e){ 
    this.parent.setOpacity(1); 
    this.removeEventListener(showScrollView); 
}); 

//Iteratively add each view in the array to the sView 
for (var x = 0; x < childCount; x++) { 
    sView.add(childViews[x]); 
} 
window.add(sView);