Appcelerator强制所有TableView行加载渲染

时间:2016-04-15 14:04:41

标签: javascript appcelerator appcelerator-titanium

这是一个愚蠢的行为。我有一个以编程方式添加自定义TableViewRows的TableView。它们是自定义的,因为它们具有左对齐标签和右对齐开关(将其视为浏览过滤器)。我在顶部插入了相同类型的行,以编程方式打开/关闭所有开关。

当我有更多的行而不是屏幕上的行并尝试切换所有行时,所有这些都按预期工作。在这种情况下,当加载视图时,自定义行无法在屏幕外切换,因此在以编程方式处理时不会触发更改后的事件。

如果我手动滚动到底部强制渲染所有行然后尝试切换所有行,它就可以正常工作。

有没有办法在视图加载时强制渲染所有TableView行(甚至是屏幕外的那些行)?或者有一种我可以忍受的解决方法吗?

1 个答案:

答案 0 :(得分:0)

这是我目前的解决方法。在OnOpen窗口事件中,我调用我的函数来初始化表数据。这很重要,因为这可以确保第一次加载。

然后我强制scrollToIndex到最后一行,然后立即scrollToIndex回到第一行。由于我在添加行后立即执行此操作,因此我需要使用setTimeout来确保它涵盖加载时间。

setTimeout(function() {
    $.tblOptions.scrollToIndex(lastIndex, { animated: false, position: Titanium.UI.iPhone.TableViewScrollPosition.BOTTOM });
}, 0);

由于这会产生令人兴奋的用户体验,因此我会在加载期间隐藏表格,显示活动指示符,然后在加载后重新显示表格。

这将暂时有用,但我仍然想知道是否有更简单的解决方案。