2013-03-13 26 views
0

我有一系列按鈕。如何更改Appcelerator Titanium中的按鈕狀態

每個按鈕有兩種不同的狀態:第一種狀態,第二種狀態。每按一次,按鈕就會變爲交替狀態。

在場景中,如果我點擊Button1,它將處於第二狀態。然後,我點擊Button2,Button2將變成第二狀態,而Button1(或處於第二狀態的任何其他按鈕)返回到第一狀態。

如何在Appcelerator Titanium中執行此操作?

我創建這樣

function createButtons(data){ 

    for (var i = 0; i < data.length; i++){ 
     //Creating each button 
     var button = Titanium.UI.createImageView({ 
      image: data[i].path, 
      value: 1 
     }); 

     //Adding the buttons to the center view 
     centerButtons.add(button); 
    } 
} 

每單擊一次,我改變了按鈕的value按鈕設置爲1或2,以確定其狀態下的按鈕是英寸 的問題是,比如說當我點擊Button1時,我可以改變它的值,但我不知道如何檢測哪個其他按鈕已經處於第二狀態,以便我可以將它重置爲它的第一狀態?

回答

3

以下示例代碼將簡單地完成您的工作。這裏我使用了按鈕而不是imageView。您可以使用它更改您的代碼。

var win = Ti.UI.createWindow({ 
    backgroundColor : 'white' 
}); 
var currentView = Ti.UI.createView({ 
    backgroundColor : '#EFEFEF' 
}); 
var button = [],top = 0; 
for (var i = 0; i < 5; i++){ 
    top += 80; 
    //Creating each button 
    button[i] = Titanium.UI.createButton({ 
     color : 'red', 
     top : top, 
     width : '80%', 
     value : 1 
    }); 
    button[i].title = 'State ' + button[i].value; 
    button[i].addEventListener('click',changeState); 
    //Adding the buttons to the center view 
    currentView.add(button[i]); 
} 

var buttonState = Titanium.UI.createButton({ 
    color : 'red', 
    top : top + 80, 
    title : 'View button states', 
    width : '80%', 
}); 

var lblStates = Titanium.UI.createLabel({ 
    color : 'red', 
    layout: 'horizontal', 
    top : top + 160, 
    text : 'Click on show button to view the button states', 
    width : '80%', 
}); 

buttonState.addEventListener('click', showButtonStates); 
currentView.add(lblStates); 
currentView.add(buttonState); 
win.add(currentView); 
win.open(); 
//Changing the state of the clicked button 
function changeState(e){ 
    e.source.value= 2; 
    e.source.title = 'State ' + e.source.value; 
    for(var i = 0;i<5;i++){ 
     if(e.source !== button[i]){ 
      button[i].value = 1; 
      button[i].title = 'State ' + button[i].value; 
     } 
    }  
} 
//To display the button state 
function showButtonStates(){ 
    lblStates.text = ""; 
    for(var i =0;i<5;i++){ 
     lblStates.text = lblStates.text + '\nbutton' + (i+1) + ' ---> state: ' + button[i].value; 
    } 
} 
0
  • 或者復位所有按鈕能回到什麼時候被點擊,然後將新州爲新按鈕原始狀態...
  • ...或跟蹤按鈕(變量?那些是什麼?),這是最後一次更改,並在爲新按鈕設置新狀態之前恢復它。