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

Posted

技术标签:

【中文标题】UITextField 值在滚动时消失并重新出现在其他 UITableViewCells [重复]【英文标题】:UITextField value disappearing and reappearing in other UITableViewCells upon scrolling [duplicate] 【发布时间】:2017-07-07 00:49:16 【问题描述】:
- (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。每次滚动时,UITextFields 中的值都会消失并出现在不同的单元格中。我知道,这是因为 dequeueReusableCellWithIdentifier 可以重复使用单元格。我进行了一些研究,发现将UITextFields 存储在一个数组中并将它们重新加载到cellForRowAtIndexPath 可能是最好的方法,但我无法实现它。一个例子是理想的,或者是解决这个问题的简单方法。谢谢

【问题讨论】:

【参考方案1】:

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

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

而不是做:

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

尝试做:

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

然后看看它们是否总是匹配?我怀疑你有一些“<null>”值隐藏在里面。

【讨论】:

仅供参考 - 这是一个重新发布的问题。我刚把它关了。您可能想在骗子上发布您的答案。

以上是关于UITextField 值在滚动时消失并重新出现在其他 UITableViewCells [重复]的主要内容,如果未能解决你的问题,请参考以下文章

iPad Safari 滚动会导致 HTML 元素消失并延迟重新出现

在自定义单元格(xib)中滚动时,UITextField 中的文本消失

UITextField 的 InputAccessoryView 在旋转时消失

为啥某些 Flask 会话值在关闭浏览器窗口后会从会话中消失,但稍后会在没有我添加它们的情况下重新出现?

iOS:响应者辞职时,文本从子类 UITextfield 中消失

iPhone - 出现键盘时如何滚动 UITextField 并调整 UITextView 的大小