自定义单元格中的UITextField文本重复

时间:2014-05-12 02:56:06

标签: ios objective-c uitableview

所以我有这个代码

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行我的行就会重复。

4 个答案:

答案 0 :(得分:1)

您似乎没有正确设置cellRoomPrice的值。如果每行都有此值,则需要为每个单元格/行设置该值。

由于您允许用户编辑房价,因此您需要将该值存储在某处,最好是在按行号索引的数组中。假设您有UITextFieldDelegate,您还需要知道用户正在编辑的行号(以存储值)-textFieldDidEndEditing:,可以通过在-cellForRowAtIndexPath:上设置标记来解析

希望这有帮助。

答案 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将在单元格之前使用!