我正在使用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',我将无法将其放置在左上角,并且代码在第一次单击之后才会显示图像,但随后图像将会更改。我已经尝试了一些其他代码,但我没有找到适合这种情况的代码。
答案 0 :(得分:1)
您无法使用acceptmatch
将图片分配给e.row.image
。
根据您的设计,acceptmatch
是acceptmatchView
的孩子,这是您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';
}
});