1

こんにちは私はピッカーのeventListenerを作っています。これが私のコードです:

var YahooScreen = require("YahooScreen");
var ESPNScreen = require("ESPNScreen");
var CBSScreen = require("CBSScreen");
var ApiWin = Titanium.UI.createWindow({
   backgroundColor : '#fff'
});
var ApiLabel = Titanium.UI.createLabel({
   text  : 'I am Fantasy Expert at',
   top   : '28%',
   left  : '10%',
   right : '10%',
   height: 'auto',
   width : 'auto',
   color : '#000',
   font  : { fontSize : 28,fontWeight : 'bold'},
   textAlign : 'center'
});

ApiWin.add(ApiLabel);

var ApiPicker = Ti.UI.createPicker({
   Top : '35%',
   left : '25%',
   width : '50%'
});

ApiPicker.addEventListener('change', function(e) {
   if (e.row == 'Yahoo!') {
      alert('I am in Yahoo')
   } else if (e.row == 'ESPN') {
      alert('I am in ESPN');
   } else {
      alert('I am in CBS')
   }
});

var data = [];
data.push(Titanium.UI.createPickerRow({
   title : 'Yahoo!'
}));

data.push(Titanium.UI.createPickerRow({
    title : 'Espn!'
}));
data.push(Titanium.UI.createPickerRow({
   title : 'CBS Sports!'
}));

ApiPicker.add(data);
ApiWin.add(ApiPicker);
ApiWin.open();

Yahooを選択すると、Yahooアラートが表示されますが、同様に、私がCBSアラートにいることだけが表示されます。この問題を解決できますか?

ありがとう

4

1 に答える 1

2

ワハブ、これは本当に簡単です。選択した行タイトルを取得したい場合は、次のコードを使用してタイトルを取得しました

//Here you will get the title of selected row title
ApiPicker.addEventListener('change', function(e) {
   alert('Selected row = ' + ApiPicker.getSelectedRow(0).title);
   //e.row.title will also give the same effect but above one is the best way
});

getSelectedRow関数を読み取る

これも動作します

ApiPicker.addEventListener('change', function(e) {
      //alert(e.row.title);
      if('Yahoo!' === e.row.title){
        alert('yahoo');
      } else if('Espn!' === e.row.title){
        alert('espn');
      } else{
        alert('cbs sports');
      }
});

また、次のようにデータをピッカーに挿入できます

//Your data list
var listData = ["Yahoo!","Espn!","CBS Sports"];
var data = [];
for( var index = 0,len = listData.length; index < len; index++ )
{
    data.push(Titanium.UI.createPickerRow({
        title : listData[index]
    }));
}

ApiPicker.add(data);

これはあなたの方法よりもはるかに簡単です。この方法に従うと、配列にタイトルを追加することで、より多くの行を作成できます。そうしないと、コードサイズが大きくなります。これはシンプルで簡単なものになります。

于 2013-01-07T08:34:17.350 に答える