Titanium SDK 版本:1.6.2(也尝试使用 1.7) iPhone SDK 版本:4.2
我正在开发一个 iPhone 应用程序,我正在从我的 API 中获取数据并将其呈现在一个表格中。在这个表中,我在每一行都有一个按钮,应该允许用户将该人添加到他或她的联系人中。代码的唯一问题(我认为)是只有最后一个按钮在被点击时响应。当我单击其他按钮时没有任何反应。
这是我的代码: http: //pastie.org/1932098
怎么了?
Titanium SDK 版本:1.6.2(也尝试使用 1.7) iPhone SDK 版本:4.2
我正在开发一个 iPhone 应用程序,我正在从我的 API 中获取数据并将其呈现在一个表格中。在这个表中,我在每一行都有一个按钮,应该允许用户将该人添加到他或她的联系人中。代码的唯一问题(我认为)是只有最后一个按钮在被点击时响应。当我单击其他按钮时没有任何反应。
这是我的代码: http: //pastie.org/1932098
怎么了?
您将 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 属性只是组成,但现在您可以看到哪个按钮发送事件。您还可以使用标题或其他任何独特的东西。
其他要查看的选项是为每个按钮创建唯一的变量名称,但这可能需要更多的工作。此外,不要将按钮放在表格行中,而是使用标签或图像,然后侦听表格或行生成的事件。