TableView 行在单击时更改颜色
TableView Row changes colour on click
我的 iOS 项目中有一个 table 视图,其中包含一些 table 行。此项目仅适用于 iOS.
这就是我创建 table 视图并填充它的方式:
exports.layoutFavoritos = function() {
require("layoutAddHeader").addHeader(Ti.App.myWindow.children[0].children[0].children[1], "Favoritos");
var tableData1 = [];
tableData1.push(Ti.UI.createTableViewSection({
headerView : require("addStickyHeader").addStickyHeader("Peixes"),
}));
for (var i = 0; i < 30; i++) {
tableData1.push(require("addItemListagem").addItemListagem("/images/a1.jpg", "", "", 0, i, "a"));
if (i == 0) {
tableData1[tableData1.length - 1].top = require("toDP").toDP(30);
}
}
tableData1.push(Ti.UI.createTableViewSection({
headerView : require("addStickyHeader").addStickyHeader("Plantas"),
}));
for (var i = 0; i < 30; i++) {
var view = Ti.UI.createView({
height : Ti.UI.SIZE,
width : Ti.UI.SIZE
});
view.add(require("addItemListagem").addItemListagem("/images/a2.jpg", "", "", 0, i, "b"));
tableData1.push(view);
if (i == 0) {
tableData1[tableData1.length - 1].top = require("toDP").toDP(30);
}
}
var tableView = Ti.UI.createTableView({
data : tableData1,
separatorColor : "transparent",
backgroundColor : "transparent",
// selectionStyle : Ti.UI.iPhone.TableViewCellSelectionStyle.NONE
});
tableView.addEventListener("click", function(e) {
console.log(e.rowData.id + e.rowData.tagLocal);
});
Ti.App.myWindow.children[0].children[1].add(tableView);
};
这就是我创建行的方式:
exports.addItemListagem = function(imagem, nomeComum, nomeCientifico, favorito, id, local) {
var viewItemListagem = Ti.UI.createTableViewRow({
height : Ti.UI.SIZE,
width : "100%",
id : id,
tagLocal : local,
backgroundSelectedColor : 'transparent',
selectedBackgroundColor : 'transparent',
selectedColor : 'transparent',
item_type : 'ROW',
// selectionStyle : Titanium.UI.iPhone.TableViewCellSelectionStyle.NONE,
// selectionStyle : Ti.UI.iPhone.TableViewCellSelectionStyle.NONE
});
viewItemListagem.add(Ti.UI.createView({
bottom : require("toDP").toDP(30),
viewShadowRadius : 3,
viewShadowColor : '#888888',
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[1] - require("toDP").toDP(30) * 2,
borderRadius : 10,
viewShadowOffset : {
x : 0,
y : 2
},
}));
viewItemListagem.children[0].add(Ti.UI.createView({
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[1] - require("toDP").toDP(30) * 2,
borderRadius : 10,
backgroundColor : "#ffffff",
}));
viewItemListagem.children[0].children[0].add(Ti.UI.createView({
image : imagem,
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[0] * 0.16,
left : 0
}));
require("resizeImage").resizeImage(imagem, 0.16, (0.16 * Ti.App.screenSize[1]) / Ti.App.screenSize[0], viewItemListagem.children[0].children[0].children[0], true, 0, 0);
return viewItemListagem;
};
问题是,当我单击一行时,它的冷却器会变为透明,而我不希望这样。我尝试使用 selectionStyle 属性 但它没有用。
this image shows my layout without any click
this image shows my layout when I click on a row, but I don't want to change the row color. I need that the row keeps the color from the first image.
检查你的图像后认为问题是 UITableview 单元格 SelectionStyle 样式。请更改如下
对于objective-c
cell.selectionStyle = UITableViewCellSelectionStyleNone;
对于Swift
cell.selectionStyle = .none
我的 iOS 项目中有一个 table 视图,其中包含一些 table 行。此项目仅适用于 iOS.
这就是我创建 table 视图并填充它的方式:
exports.layoutFavoritos = function() {
require("layoutAddHeader").addHeader(Ti.App.myWindow.children[0].children[0].children[1], "Favoritos");
var tableData1 = [];
tableData1.push(Ti.UI.createTableViewSection({
headerView : require("addStickyHeader").addStickyHeader("Peixes"),
}));
for (var i = 0; i < 30; i++) {
tableData1.push(require("addItemListagem").addItemListagem("/images/a1.jpg", "", "", 0, i, "a"));
if (i == 0) {
tableData1[tableData1.length - 1].top = require("toDP").toDP(30);
}
}
tableData1.push(Ti.UI.createTableViewSection({
headerView : require("addStickyHeader").addStickyHeader("Plantas"),
}));
for (var i = 0; i < 30; i++) {
var view = Ti.UI.createView({
height : Ti.UI.SIZE,
width : Ti.UI.SIZE
});
view.add(require("addItemListagem").addItemListagem("/images/a2.jpg", "", "", 0, i, "b"));
tableData1.push(view);
if (i == 0) {
tableData1[tableData1.length - 1].top = require("toDP").toDP(30);
}
}
var tableView = Ti.UI.createTableView({
data : tableData1,
separatorColor : "transparent",
backgroundColor : "transparent",
// selectionStyle : Ti.UI.iPhone.TableViewCellSelectionStyle.NONE
});
tableView.addEventListener("click", function(e) {
console.log(e.rowData.id + e.rowData.tagLocal);
});
Ti.App.myWindow.children[0].children[1].add(tableView);
};
这就是我创建行的方式:
exports.addItemListagem = function(imagem, nomeComum, nomeCientifico, favorito, id, local) {
var viewItemListagem = Ti.UI.createTableViewRow({
height : Ti.UI.SIZE,
width : "100%",
id : id,
tagLocal : local,
backgroundSelectedColor : 'transparent',
selectedBackgroundColor : 'transparent',
selectedColor : 'transparent',
item_type : 'ROW',
// selectionStyle : Titanium.UI.iPhone.TableViewCellSelectionStyle.NONE,
// selectionStyle : Ti.UI.iPhone.TableViewCellSelectionStyle.NONE
});
viewItemListagem.add(Ti.UI.createView({
bottom : require("toDP").toDP(30),
viewShadowRadius : 3,
viewShadowColor : '#888888',
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[1] - require("toDP").toDP(30) * 2,
borderRadius : 10,
viewShadowOffset : {
x : 0,
y : 2
},
}));
viewItemListagem.children[0].add(Ti.UI.createView({
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[1] - require("toDP").toDP(30) * 2,
borderRadius : 10,
backgroundColor : "#ffffff",
}));
viewItemListagem.children[0].children[0].add(Ti.UI.createView({
image : imagem,
height : Ti.App.screenSize[0] * 0.16,
width : Ti.App.screenSize[0] * 0.16,
left : 0
}));
require("resizeImage").resizeImage(imagem, 0.16, (0.16 * Ti.App.screenSize[1]) / Ti.App.screenSize[0], viewItemListagem.children[0].children[0].children[0], true, 0, 0);
return viewItemListagem;
};
问题是,当我单击一行时,它的冷却器会变为透明,而我不希望这样。我尝试使用 selectionStyle 属性 但它没有用。
this image shows my layout without any click
this image shows my layout when I click on a row, but I don't want to change the row color. I need that the row keeps the color from the first image.
检查你的图像后认为问题是 UITableview 单元格 SelectionStyle 样式。请更改如下
对于objective-c
cell.selectionStyle = UITableViewCellSelectionStyleNone;
对于Swift
cell.selectionStyle = .none