0

Titanium SDK 版本:1.6.2(也尝试使用 1.7) iPhone SDK 版本:4.2

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

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

怎么了?

4

1 回答 1

1

您将 button.addEventListener 添加到 for 语句之外,并且由于每次迭代都会覆盖按钮 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 属性只是组成,但现在您可以看到哪个按钮发送事件。您还可以使用标题或其他任何独特的东西。

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

于 2011-05-23T17:08:17.423 回答