Appcelerator的。行中的按钮是不可点击的

时间:2011-05-20 15:17:37

标签: appcelerator-mobile

Titanium SDK版本:1.6.2(也试过1.7) iPhone SDK版本:4.2

我正在开发一个iPhone应用程序,我从我的API获取数据并将其呈现在表格中。在这个表中,我在每一行都有一个按钮,允许用户将该人添加到他或她的联系人。代码的唯一问题(我认为)是只有最后一个按钮在被点击时响应。单击其他按钮时没有任何反应。

这是我的代码:http://pastie.org/1932098

有什么问题?

1 个答案:

答案 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属性刚刚组成,但现在您可以看到哪个按钮发送了该事件。您还可以使用标题或其他任何独特的内容。

要查看的其他选项是为每个按钮创建唯一的变量名称,但这可能更多。此外,不是使用在表行中放置按钮,而是使用标签或图像,然后监听表或行生成的事件。