我有一个用swift编写的应用程序,其中我有显示产品的单元格。我有一个按钮将项目添加到购物车。当产品缺货时,在UICollectionViewCell的子类中,我使用此代码禁用'添加到购物车'按钮。
$('#selectMRPC').change(function () {
//fetch data
var mrpc = $(this).find('option:selected').data('mrpc');
$('#paramBody').empty();
for (var i = 1; i <= 10; i++) {
var field = mrpc["field" + i];
if (field !== undefined) {
var parsedField = field.split('_');
var value = parsedField[0];
var type = parsedField[1];
switch (type) {
case "S":
type = "text";
if (value === '""')
value = null;
break;
case "B":
type = "checkbox";
break;
case "N":
type = "number";
value = parseInt(value);
break;
case "D":
type = "number";
value = parseInt(value);
if (value === '""')
value = null;
break;
}
$('#paramBody').append('<tr>');
$('#paramBody').append('<td>' + i + '</td>');
$('#paramBody').append('<td>' + type + '</td>');
$('#paramBody').append('<td><input name="Fields" type="' + type + '">').val(value);
$('#paramBody').append('</tr>');
}
}
});
当我滚动页面时,其他单元格中的“添加到购物车”按钮也会被隐藏,即使它们不满足条件class Product: UICollectionViewCell {
//Some code here
//And here
if(data.stock < 0){
addToCartButton.isHidden = true;
}
}
。发生了什么,我该如何克服这个?
答案 0 :(得分:1)
你错过的是其他情况伙伴:)
if(data.stock < 0){
addToCartButton.isHidden = true;
}
else {
addToCartButton.isHidden = false;
}
或强>
在collectionView中,滚动时会重复使用单元格。您应该使用prepareForReuse
重置UIComponents的状态,然后才能重用它们。
override func prepareForReuse() {
//reset all the fields of cell
addToCartButton.isHidden = false
}
使用prepareForReuse
只是最佳做法,可以解决您的问题。但问题的真正原因是缺少其他条件