Appcelerator. Кнопки в строках не щелкают - PullRequest
0 голосов
/ 20 мая 2011

Titanium SDK версия: 1.6.2 (пробовал с 1.7 тоже) Версия iPhone SDK: 4.2

Я занимаюсь разработкой приложения для iPhone и извлекаю данные из своего API и представляю их в виде таблицы. В этой таблице у меня есть кнопка в каждой строке, которая позволяет пользователю добавлять этого человека в свои контакты. Единственная проблема с кодом (я думаю) состоит в том, что только последняя кнопка реагирует на нажатие. Ничего не происходит, когда я нажимаю на другие кнопки.

Это мой код: http://pastie.org/1932098

Что не так?

1 Ответ

1 голос
/ 23 мая 2011

Вы добавляете button.addEventListener вне оператора for, и поскольку вы перезаписываете var кнопки при каждой итерации, eventListener присоединяется только к последней созданной кнопке.

Вероятно, это не лучший способ решить эту проблему, но для решения вашей проблемы переместите button.addEventListener внутри оператора for, а затем проверьте уникальный идентификатор в объекте, который отправляется событию. Пример:

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 только что составлено, но теперь вы можете видеть, какая кнопка отправляет событие. Вы также можете использовать название или что-то еще, что является уникальным.

Другие опции, на которые стоит обратить внимание, - это создание уникальных имен переменных для каждой кнопки, но это, вероятно, больше работы. Кроме того, вместо того, чтобы помещать кнопку в строку таблицы, используйте метку или изображение, а затем прослушивайте событие, сгенерированное таблицей или строкой.

...