2011-05-20 49 views
0

鈦SDK版本:1.6.2(試圖與1.7太) iPhone SDK版本:4.2Appcelerator。在排按鈕是不可點擊

我開發一個iPhone應用程序,我從我的API獲取數據,並在表中呈現它。在這張表中,我在每一行上都有一個按鈕,允許用戶將他加入他或她的聯繫人。代碼唯一的問題(我認爲)是隻有最後一個按鈕點擊時纔會響應。當我點擊其他按鈕時沒有任何反應。

這是我的代碼:http://pastie.org/1932098

有什麼不對?

回答

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屬性剛剛組成,但現在您可以看到哪個按鈕發送事件。你也可以使用標題,或其他任何獨特的東西。

其他可供選擇的方法是爲每個按鈕創建唯一的變量名稱,但這可能是更多的工作。另外,不用將按鈕放在表格行中,而是使用標籤或圖像,然後監聽由表或行生成的事件。

+0

看起來不錯!我會試試看。另一件事,我怎麼才能讓包含點擊按鈕的行消失後點擊(只有點擊行)? – 2011-05-24 08:05:47