所以我有这个代码
if (tableView.tag == RECO_TABLE) {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
NSString *roomName = [selectedRooms objectAtIndex:indexPath.row];
[cell.cellRoomName setText:roomName];
return cell;
}
在我的自定义单元格内
@property (weak, nonatomic) IBOutlet UILabel *cellRoomName;
@property (weak, nonatomic) IBOutlet UITextField *cellRoomPrice;
cellRoomName 很好但 cellRoomPrice 在我的行达到> 5时保持重复并且我知道重用单元格的概念但我不知道如何开始
顺便说一句,这是我的示例场景
第1行= 40
第2行= 2
第3行= null
第4行= null
第5行= null
第6行= 40
第7行= 2
所以每隔5行我的行就会重复。
答案 0 :(得分:1)
您似乎没有正确设置cellRoomPrice
的值。如果每行都有此值,则需要为每个单元格/行设置该值。
由于您允许用户编辑房价,因此您需要将该值存储在某处,最好是在按行号索引的数组中。假设您有UITextFieldDelegate
,您还需要知道用户正在编辑的行号(以存储值)-textFieldDidEndEditing:
,可以通过在-cellForRowAtIndexPath:
上设置标记来解析1} p>
希望这有帮助。
答案 1 :(得分:1)
尝试这样做,因为您没有选中是否已分配单元格。
if (tableView.tag == RECO_TABLE) {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if(!cell) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CustomCell"];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
NSString *roomName = [selectedRooms objectAtIndex:indexPath.row];
[cell.cellRoomName setText:roomName];
return cell;
}
答案 2 :(得分:1)
首先检查单元格是否为零
,您需要做的代码变化很少if (tableView.tag == RECO_TABLE) {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if(!cell) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CustomCell"];
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
NSString *roomName = [selectedRooms objectAtIndex:indexPath.row];
[cell.cellRoomName setText:roomName];
return cell;
}
然后你在单元格文本字段中输入的文本需要存储在其他数组中,例如“selectedRoomsPrices”和“cellForRowAtIndexPath:”,你需要检查计数并在“cell.cellRoomPrice”中设置该值。像这样:
if (tableView.tag == RECO_TABLE) {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if(!cell) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CustomCell"];
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
NSString *roomName = [selectedRooms objectAtIndex:indexPath.row];
[cell.cellRoomName setText:roomName];
NSString *roomPrice = @"";
if(selectedPrices.count > indexPath.row) {
roomPrice = [selectedRoomsPrices objectAtIndex:indexPath.row];
}
[cell.cellRoomPrice setText:roomPrice];
return cell;
}
答案 3 :(得分:0)
您的行已达到> 5是重复的,因为我没有为它设定价值! TableView在单元格之前重用,所以如果你没有为它设置新值,tableview将在单元格之前使用!