我在Titanium Developer的javascript文件中有一个表格视图。我有一些自定义TableViewRows
,我希望在输入更改时单击导航栏中的按钮时获取自定义行中的输入值。
这是我的自定义行代码:
function createInputRow(label, value) {
var row = Titanium.UI.createTableViewRow();
var input = Titanium.UI.createTextField({
value: value,
//font: {fontSize:19,fontWeight:'bold'},
width: 200,
textAlign: 'left',
top: '50%',
bottom: '50%',
left: 80,
height: 35,
color: '#336699'
});
row.add(input);
var labelLabel = Titanium.UI.createLabel({
text: label,
font: {
fontSize: 13
},
width: 72,
textAlign: 'left',
top: '50%',
bottom: '50%',
left: 8,
height: 16
});
row.add(labelLabel);
return row;
}
这是设置表格的代码:
var tableView = Titanium.UI.createTableView({
style: Titanium.UI.iPhone.TableViewStyle.GROUPED
});
var cells = [];
cells.push(createInputRow('First Name', rows.fieldByName('first_name'))); // the database extraction is fine
/* more rows */
tableView.setData(cells);
win.add(tableView);
最后,这是我的按钮代码:
var saveButton = Titanium.UI.createButton({
title: 'Update'
});
saveButton.addEventListener('click', function() {
/* what to do here to get rows? */
var query = tableView.rows;
});
win.setRightNavButton(saveButton);
非常感谢任何帮助。 如果我指向正确的方向,我通常可以休息一下。
答案 0 :(得分:2)
我会将输入定义为函数外部的数组,以便在需要时将它们循环播放。
var inputs = [];
function createInputRow(label, value, index) {
var row = Titanium.UI.createTableViewRow();
inputs[index] = Titanium.UI.createTextField({
// properties
});
row.add(inputs[index]);
var labelLabel = Titanium.UI.createLabel({
// properties
});
row.add(labelLabel);
return row;
}
saveButton.addEventListener('click', function() {
var data = tableView.data;
for(var i=0,l=data.length;i<l;i++) {
Ti.API.info(inputs[i].value);
}
});