UITextField值在滚动时消失并重新出现在其他UITableViewCells中

时间:2017-07-07 00:49:17

标签: objective-c uitableview uitextfield

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {



static NSString *CellIdentifier = @"inventoryItem";


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];



if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.textLabel.font = [UIFont systemFontOfSize:15];

}



UILabel *name = (UILabel *)[cell viewWithTag:1];

name.text = [NSString stringWithFormat:@"%@",inventoryItems[indexPath.row][@"Inventory_Name"]];

NSLog(@"%@", name.text);



cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;

}

我是Objective-C的初学者。我有一个名为UITableViewCell的自定义UITextFieldUITextField标记为4.每次滚动时,UITextField中的值都会消失并显示在不同的单元格中。我理解,这是因为dequeueReusableCellWithIdentifier,其中单元格被重用。我已经研究了一下,发现将UITextField存储在一个数组中并将它们重新加载到cellForRowAtIndexPath中可能是最好的方法,但我在实现它时遇到了麻烦。一个例子是理想的,或者是解决这个问题的简单方法。谢谢。enter image description here

1 个答案:

答案 0 :(得分:0)

每次调用cellForRowAtIndexPath:方法时,您都需要设置name UILabel。

我想知道/认为inventoryItems[indexPath.row][@"Inventory_Name"]的价值不是您所期望的吗?

而不是:

NSLog(@"%@", name.text);

尝试做:

NSLog(@"%@ SHOULD EQUAL %@", inventoryItems[indexPath.row][@"Inventory_Name"], name.text);

看看他们是否总是匹配?我怀疑你有一些&#34; <null>&#34;隐藏在那里的价值观。