2016-02-25 1 views
0

У меня есть несколько видов, которые динамически добавляются в ScrollView с помощью параметра for, но когда пользователь нажимает на одно из видов, я хочу изменить цвет фона в представлении. У меня есть следующий код для события Click:изменить цвет фона с его идентификатором в титане

(function() { 
    var id = i; 
    viewQuantity.addEventListener('click', function(e) { 
     viewQuantity.backgroundColor = '#FFFFFF'; 
    }); 
})(); 

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

+0

Вы должны добавить «Титан» на ваш вопрос. Я нашел ваш вопрос, используя тег iOS, и мог бы помочь вам в родном приложении iOS, но почти ничего не знаю о Titanium. (извините) –

+0

Ну, @Manuel_Rodrigues! Пожалуйста, введите больше кода или сообщите нам подробную информацию о своей проблеме. –

+0

переменная 'id' является идентификатором представления. поэтому вэнь я нажимаю на него и показываю предупреждение с щелчком, который показывает, что он показывает 1 руду 2 руды 3 в зависимости от того, что было нажато. Но теперь я хочу изменить цвет фона вида, который был нажат пользователем. единственный код Id, который у меня есть, - это код, который я опубликовал. если есть лучший способ установить id для представления, а затем изменить цвет фона его на событие клика, я ценю, если вы простудитесь, как его реализовать. я не использую папку с сплавом –

ответ

1

Внутри события click вы получаете свойство события в функции в качестве первого параметра. Это имеет объект source, который является элементом, который пользователь нажал.

var clickedView; 
(function() { 
    var id = i; 
    viewQuantity.addEventListener('click', function(e) { 
     if (clickedView){ 
      clickedView.backgroundColor= '#000000'; // put your own color here to restore original 
     } 
     e.source.backgroundColor = '#FFFFFF'; 
     clickedView = e.source; 
    }); 
})(); 

Чтобы изменить цвет позже, вы можете сохранить ссылку на объект, а также изменить цвет позже

+0

благодарю, что это сработало для моей проблемы, но теперь я попробую тот же код, чтобы изменить цвет ярлыка со следующей строкой (e.source.labelX.color = 'black'), это дает мне ошибка, заявляющая, что undefined не является объектом –

+0

Я добавил восстановление исходного цвета в ответ. Если это вам помогло, пожалуйста, пропустите и отметьте ответ как решение;) –

+0

Я изменил e.source.backroundColor на viewQuantity.backgroundColor и clickedView = e.souce на clickedView = viewQuantity, потому что у меня есть метка внутри представления и когда i щелкнув по метке, цвет фона, который был изменен, был цветом ярлыка, а не представлением, потому что e. source возвращает объект метки, когда я нажимаю его, а не вид. но спасибо, ваше предложение помогло мне. –

0

Попробуйте что-то вроде этого:

var scrollView = Ti.UI.createScrollView(); 

var lastClickedView; 

for(var i = 0;i<=10;i++){ 
    (function(){ 
     var view = Ti.UI.createView(); 
     var label = Ti.UI.createLabel(); 
     view.add(label); 
     scrollView.add(view); 
     view.addEventListener('click',function(){ 
      if(lastClickedView){ 
       lastClickedView.backgroundColor = '#000'; 
       lastClickedView.children[0].color = '#000'; 
      } 
      view.backgroundColor = '#fff'; 
      label.color = '#fff'; 
      lastClickedView = view; 
     }); 
    })(); 
} 
+0

Вторая часть вашего сообщения работала, чтобы изменить цвет таблицы, но я становлюсь новой ошибкой, которая возникает, когда я нажимаю на верхнюю часть таблицы, а не на представление. почему событие активируется при нажатии на метке и в представлении? –

+0

Мой плохой. 'e.source' может быть меткой, поэтому' e.source.children' может выдать ошибку. Просто используйте первое решение. Он должен работать нормально. Ожидается, что «щелчок» будет запущен, когда вы нажмете на ярлык, поскольку он добавлен в представление, и событие пузырится вверх. – Shawn

+0

он работал полностью, но теперь представьте, что у меня есть два вида, и когда я нажимаю на первый вид, он меняет цвет фона. когда я нажимаю второй вид, он меняет цвет фона, но мне нужно сбросить цвет фона первого вида, когда я нажимаю на второй вид. Как я могу это сделать? –