在tableViewRow中交换图像

时间:2014-05-02 21:00:38

标签: javascript ios titanium

我正在使用Titanium构建iOS 7应用程序。我有一个tableView,显示几个数据。每个tableViewRow都是180px高。我想在左上角放置一个60像素×60像素的图像。单击图像时,我想将图像更改为另一个图像。这是我到目前为止的代码:

var tableview = Ti.UI.createTableView({
backgroundColor : 'transparent',
top : '0px',
width : '99%',
bottom : '10px',
color : '#000',
contentHeight : 'auto'
});

tableview.addEventListener('click', function(e) {
    if(e.row.image == 'images/nomatch.png') {
        e.row.image = 'images/match.png';
    } else {
        e.row.image = 'images/nomatch.png';
    }
});

//Then I get my data from the database and set up my row

row = Ti.UI.createTableViewRow({
backgroundImage : 'images/openmatchesrowbackground.png',
width : '90%',
height : '180px'
});

var acceptmatchView = Ti.UI.createView({
left : '0px',
top : '0px',
width: '60px',
height: '60px'
});

var acceptmatch = Ti.UI.createImageView({
image : 'images/nomatch.png',
left : '0px',
top : '0px',
width: '60px',
height: '60px'
});

//Then I add 7 more labels to the row and add the images and labels to the views and the views to the windows

acceptmatchView.add(acceptmatch);
row.add(acceptmatchView);
...

如果我使用row属性'leftImage',我将无法将其放置在左上角,并且代码在第一次单击之后才会显示图像,但随后图像将会更改。我已经尝试了一些其他代码,但我没有找到适合这种情况的代码。

1 个答案:

答案 0 :(得分:1)

您无法使用acceptmatch将图片分配给e.row.image

根据您的设计,acceptmatchacceptmatchView的孩子,这是您row的孩子。

Your row
   - > Children[0] - acceptmatchView
        -> Children[0] - acceptmatch 

所以你可以像这样分配图像:

tableview.addEventListener('click', function(e) {
    var imageView = e.row.children[0].children[0];
    if(imageView.image == 'images/nomatch.png')
    {
        imageView.image = 'images/match.png';
    }
    else
    {
        imageView.image = 'images/nomatch.png';
    }
});