Titanium 钛合金TableViewRow类名,带有自定义行
我想知道Ti.UI.TableViewRow的“className”属性在创建自定义行时有何帮助 例如,我以以下方式使用自定义行填充tableview:Titanium 钛合金TableViewRow类名,带有自定义行,titanium,tableview,allocation,classname,Titanium,Tableview,Allocation,Classname,我想知道Ti.UI.TableViewRow的“className”属性在创建自定义行时有何帮助 例如,我以以下方式使用自定义行填充tableview: function populateTableView(tableView, data) { var rows = []; var row; var title, image; var i; for (i = 0; i < data.length; i++) { title = Ti.UI.createLabe
function populateTableView(tableView, data) {
var rows = [];
var row;
var title, image;
var i;
for (i = 0; i < data.length; i++) {
title = Ti.UI.createLabel({
text : data[i].title,
width : 100,
height: 30,
top: 5,
left: 25
});
image = Ti.UI.createImage({
image : 'some_image.png',
width: 30,
height: 30,
top: 5,
left: 5
});
/* and, like, 5+ more views or whatever */
row = Ti.UI.createTableViewRow();
row.add(titleLabel);
row.add(image);
rows.push(row);
}
tableView.setData(rows);
}
函数populateTableView(表视图,数据){
var行=[];
var行;
标题、图像;
var i;
对于(i=0;i
当然,使用TableViewRow的标准标题
和图像
属性可以轻松创建“自定义”行的示例,但这不是重点。如何防止分配表视图的新标签、图像视图和其他子视图,以利于它们的重用?我知道,在iOS中,这是通过使用方法-[UITableView dequeueReusableCellWithIdentifier:
从“库”(此处“className”是“identifier”)获取行对象来实现的,该库当前未用于显示数据,但已在其中正确放置了所需的子视图,因此,只需要更新其中包含的数据(文本、图像数据等)
由于这个系统非常简单,我很难相信Tianium API使用的方法不支持这一点
在阅读了API并搜索了web之后,我怀疑情况就是这样。建议使用“className”属性作为一种简单的方法,以使Tianium中的表视图更高效,但没有以任何方式解释它与自定义表视图行的关系。如果有人能为我澄清此事,我将不胜感激。Tianium SDK使用
-[UITableView dequeueReusableCellWithIdentifier::
重用单元布局。在UITableView代理(Tianium SDK 2.1.3)中,您有:
TiUITableView.m(第1720行)
此代码用于重用布局单元。您可以在Apple文档中看到有关此方法的更多信息。谢谢您向我指出这一点,但是我在哪里可以找到与调用的javascript函数的连接?就像连接到
row=Ti.UI.createTableViewRow()
或者当设置了类名时(顺便说一句,我在这段代码中没有这样做,但我可能应该这样做…),那么,这就是连接。当您使用Ti.UI.createTableViewRow()
创建UITableViewRow时,属性tableClass被设置,UITableView委托使用它来重用单元格。我看到您看到了它,但我看不到如何使用javascript方法Ti.UI.createTableViewRow()
到Objective-C方法-tableView:CellForRowatineXpath:
。我现在的理解是:每次创建TiUITableView行
,并add()
将它们添加到TiUITableView
代理对象“系统”不知怎的记住了这一点,以确保使用正确的参数多次调用ObjC方法-tableView:cellforrowatinexpath:
,以确保UITableview
对象在显示之前获得正确的UITableViewRow
?cellforrowatinexpath是tableView委托,这是从iOS自动调用的。它不需要被调用。当UITableViewRow被构造为显示给用户时,将调用它。回答你的问题?哦,对,我知道;),当然可以!答复:)。但还有一件事:[TiUITableViewRowProxy clearTableRowCell:cell]代码>清除单元格(我在TiUITableViewRowProxy.m中进行了检查。在我看来,这似乎与人们希望发生的完全相反,不是吗?
- (UITableViewCell *)tableView:(UITableView *)ourTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
UITableViewCell *cell = [ourTableView dequeueReusableCellWithIdentifier:row.tableClass];
...
}