我正在创建一个for来随机创建textAreas,但我需要知道用户按下了哪个textArea。
有没有办法为每个textArea输入一个唯一的ID?
我如何创建textView:
var txtArea = Ti.UI.createTextArea({
color : '#000',
backgroundColor : 'transparent',
font: {
fontSize : 28,
fontWeight : 'normal',
},
editable : false,
textAlign : 'left',
value : a[i],
textAlign : 'center',
top : '30%',
width : '100%',
height : '100%'
});
我试图输入“id:i”,但所有textAreas都返回了相同的ID。
答案 0 :(得分:2)
建议不要向Titanium代理添加自定义属性。这就是我要做的事情(基于我对你想要达到的目标的猜测):
for(var i = 0; i < 10; i++){
var txtArea = Ti.UI.createTextArea({
value : "test n " + i,
textAlign : 'left',
textAlign : 'center',
top : '30%',
width : '100%',
height : '100%'
});
(function(){
var id = i;
txtArea.addEventListener('click',function(){
console.log(id);
});
})();
}
答案 1 :(得分:0)
如果你想分配一个数字ID,你是正确的,但我认为你必须在表视图的行中插入所有TextAreas。这是因为您从表视图行获取的ID不是来自Textarea。如果您在表格视图行中插入, id的尝试是正确的。
您创建textArea的代码是这样的:
var txtArea = Ti.UI.createTextArea({
id: i,
value : "test n " + i,
textAlign : 'left',
textAlign : 'center',
top : '30%',
width : '100%',
height : '100%'
});
您可以进一步获取每行id
只需添加点击事件监听器,特别是:
tableViewRowName.addEventListener('click', function(e) {
console.log(e.source.id);
}
如果有效,请告诉我,不要犹豫与我联系。
完整示例
在您的控制器中
var win = Ti.UI.createWindow();
var scrollableView = Ti.UI.createScrollView();
var table = Ti.UI.createTableView();
var tableData = [];
for(var i=0;i<list.length;i++){
var row = Ti.UI.createTableViewRow();
var txtArea = Ti.UI.createTextArea({
id: i,
value : "test n " + i,
textAlign : 'left',
textAlign : 'center',
top : '30%',
width : '100%',
height : '100%'
});
row.add(txtArea);
tableData.push(row);
}
table.setData(tableData);
scrollableView.add(table);
win.add(scrollableView);
win.open();
这就是我的意思:在你的结构中你已经有一个空的表视图。 你在控制器中用一个循环填充这个表(对于或当它是相同的)。
每次迭代都会使用相应的TextArea推送行,并在循环结束时使用setData
填充表格
此致