0

Titanium と Javascript を使用して、iOS 用のアルファベット順のスクロール バー (iOS の連絡先など) を作成しようとしています。ここで見つけたいくつかのコードを適応させました

ユーザーが特定の行を選択すると、「クライアント名」が新しいウィンドウに渡されるように調整しようとしています。コードおよび/またはそれを適応させようとした方法には、2 つの問題があります。「ヘッダー」行の直後の最初の行 (A、B、C...) が選択された場合、何もしません。最初の行の後の他の行は、ユーザーを新しいウィンドウに誘導しますが、「クライアント名」を渡しません。誰かがこれを機能させるコードを見せてもらえますか? OS 10.7.5、Titanium Studio ビルド: jenkins-titanium-rcp-release-788 (オリジン/リリース) 日付: 2013 年 2 月 20 日 12:04:51 を使用しています。これが私のコードです: 注: 以下のコードは、問題が修正された後の動作コードです。

var win = Titanium.UI.currentWindow;
win.barColor='#336699';
win.title='Alphabetical List';
win.backgroundImage='images/background.png';

var db = (function() {
var api   = {};
    api.all_item_names = function() {
        var conn = Ti.Database.install('mydb].sqlite','clients');
        var results = [];
        var resultSet = conn.execute('select * from clients order by clientname asc');
        while ( resultSet.isValidRow()) {
            results.push({
            clientname:  resultSet.fieldByName('clientname'),
        });
        resultSet.next();
    }
    resultSet.close();
    return results;
};
return api;
}());

var tvrow;
var curheader   = 'A';
var list    = [];
var index   = [];
var data   = [];
var isAndroid   = (Titanium.Platform.name == 'android');

list = ( db.all_item_names() );

for ( var ipos=0; ipos<list.length;ipos++){
    if( list[ipos].clientname[0] != curheader){
        curheader = list[ipos].clientname[0];

        tvrow = Titanium.UI.createTableViewRow({
            height:    40,
            path:'clientdetail.js' ,
            client: list[ipos],
            header:    curheader 
            });
        index.push({title:curheader, index:ipos});
    } else {
        tvrow = Titanium.UI.createTableViewRow({
            height:40,
            path:'clientdetail.js' ,
            client: list[ipos]});
        }   

var title= Titanium.UI.createLabel({ 
    left:    5, 
    top:     2, 
    height:  40, 
    color:   '#000', 
    font: {fontSize: 14, fontWeight: 'normal', fontFamily: (isAndroid?'sans-serif':'Helvetica Neue')}, 
    text:    list[ipos].clientname });
    tvrow.add(title);
    data.push(tvrow);
}

var tableView = Titanium.UI.createTableView({
    data:            data,
    index:           index,
    backgroundColor:'transparent',
    separatorStyle:  Titanium.UI.iPhone.TableViewStyle.GROUPED,
    top:             1,
    width:           '99%'
});

tableView.addEventListener('click', function(e)
    {
        if (e.rowData.path)
        {
            var win = Ti.UI.createWindow({
                url:e.row.path,
                title:e.row.clientname
            });

        var client = e.row.client;
        win.client = client.clientname;
        Ti.UI.currentTab.open(win);
    }
});

win.add(tableView);
4

0 に答える 0