Titanium SDK版本:1.6.2(也试过1.7) iPhone SDK版本:4.2
我正在开发一个iPhone应用程序,我从我的API获取数据并将其呈现在表格中。在这个表中,我在每一行都有一个按钮,允许用户将该人添加到他或她的联系人。代码的唯一问题(我认为)是只有最后一个按钮在被点击时响应。单击其他按钮时没有任何反应。
这是我的代码:http://pastie.org/1932098
有什么问题?
答案 0 :(得分:1)
您正在for语句之外添加button.addEventListener,并且由于您在每次迭代时都覆盖了按钮var,因此eventListener仅附加到创建的最后一个按钮。
这可能不是解决此问题的最佳方法,但要修复问题,请在for语句中移动button.addEventListener,然后检查发送到事件的对象中的唯一标识符。例如:
for (x=0;x<5;x++) {
var button = Titanium.UI.createButton({
height:40,
width:100,
top:50*x,
id:x
});
var label = Titanium.UI.createLabel({
text:'LABEL '+x
});
button.add(label);
win1.add(button);
button.addEventListener('click', function(e){
Ti.API.info('Button clicked '+e.source.id);
});
}
button.id属性刚刚组成,但现在您可以看到哪个按钮发送了该事件。您还可以使用标题或其他任何独特的内容。
要查看的其他选项是为每个按钮创建唯一的变量名称,但这可能更多。此外,不是使用在表行中放置按钮,而是使用标签或图像,然后监听表或行生成的事件。