好的,这是(或应该)直截了当 - 除非我忽略了某些事情(可能就是这种情况)。
我创建了一个非常简单的例子:
INDEX.XML
<Alloy>
<Window>
<TableView>
<TableViewSection>
<TableViewRow>
<Label>Row 1</Label>
</TableViewRow>
<TableViewRow visible="false">
<Label>Row 2</Label>
</TableViewRow>
<TableViewRow id="row3">
<Label>Row 3</Label>
</TableViewRow>
</TableViewSection>
</TableView>
</Window>
</Alloy>
...和index.tss:
"#row3":{visible:false}
"Window": {
top: 60
}
我原以为没有显示第2行和第3行。但是,所有行都显示(在iOS模拟器中)。
我已经阅读过早期版本的Titanium Studio中的类似问题。这些2-4岁的帖子的解决方法是将tableviewrow的高度设置为1(忽略0)。但是,这仍然显示了标签的一部分。然后我可以隐藏标签(visible =“false”workst for that!)然后我只看到一个“瘦”行。但是使用标准视图行分隔符,您仍然可以看到有一行....
那么,我在这里做错了什么?
我使用TableView布局创建用于输入数据的表单 - 如果设置了开关,则只应向用户显示某些行。这样做有更好的模式吗?
我在Studio 3.4.1GA,Mac OS X 10.10.1以及在模拟器中使用8.1 iOS; - )
提前谢谢!
/约翰
答案 0 :(得分:0)
我不确定这是否是最佳方法,但您可以尝试在控制器内填充您的部分。
您将使用所有(并且仅)您希望每次显示的行填充数组,然后更新TableViewSection的rows
属性。
我引用一些伪代码:
var section = Ti.UI.createTableSection({...});
var row1 = Ti.UI.createTableViewRow({...});
var row2 = Ti.UI.createTableViewRow({...});
var row3 = Ti.UI.createTableViewRow({...});
var rows_options = [];
if (show_less) rows_options.push(row1, row2); //"hide" 3rd row
else rows_options.push(row1, row2, row3); //show all 3 rows
section.rows = rows_options;
或者,如果没有必要,请考虑不使用tableview,而是使用layout: vertical
托管您的行来构建自己的视图,这将大大模拟相同的用途。在这种情况下,我相信visible
黑客会对你有用。
答案 1 :(得分:0)
我也在开发人员问过这个问题&#39; appcelerator.com上的Q&amp; A。我最后得到了一些关于如何解决它的建议 - 两者都使用Alloy标记。最好的解决方案是Lucky Luke建议的 - 但使用Alloy而不是使用传统的编码风格创建TableView。
这是link to the solution I chose。
很抱歉,我之前没有来过这里的链接。
/约翰