带有 UILabel 内容的 UITableViewCell 在滚动时发生变化
Posted
技术标签:
【中文标题】带有 UILabel 内容的 UITableViewCell 在滚动时发生变化【英文标题】:UITableViewCell with UILabel content changing on scroll 【发布时间】:2018-08-16 13:17:56 【问题描述】:请检查下面的代码和图像以了解,
我使用UITableView
进行配置文件编辑,每个单元格都包含带有旧数据的UILabel
。输入新的详细信息并自动滚动后,值是对旧数据的更改。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return identifiersAry.count;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
EditProfileTableViewCell *cell = (EditProfileTableViewCell *)[tableView dequeueReusableCellWithIdentifier:[identifiersAry objectAtIndex:indexPath.row]];
switch (indexPath.row)
case NAME_CELL:
nameTxtFld = cell.firstNameTxtLbl;
name = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"name"];
cell.firstNameTxtLbl.text = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"name"];
break;
case UserName_Cell:
userNameTxtFld = cell.userNameTxtFld;
cell.userNameTxtFld.text = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"userName"];
break;
default:
break;
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
【问题讨论】:
这是因为您使用的是来自 NSUserDefaults 的值,而不是来自实例变量的值。您需要存储每个文本字段的当前值,并需要在 cellForRowAtIndexPath 中显示和使用它 为什么不用静态tableviewcontroller?这样您就可以为不同单元格的文本字段输出不同的变量。 用户输入时是否保存数据?如果不是,它将从NSUserDefaults
读取,它仍将保存旧数据...
我为我的问题给出了答案,检查一次,如果有任何修改,它对我有用,请分享@Ladislav
【参考方案1】:
它解决了,我只是使用 'YES' 获取初始布尔值,当它第一次加载从 NSUserDefaults 存储的所有数据时,当加载最后一个单元格时,我只是更改 'NO' 值然后它对我有用谢谢。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return identifiersAry.count;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
EditProfileTableViewCell *cell = (EditProfileTableViewCell *)[tableView dequeueReusableCellWithIdentifier:[identifiersAry objectAtIndex:indexPath.row]];
switch (indexPath.row)
case NAME_CELL:
nameTxtFld = cell.firstNameTxtLbl;
name = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"name"];
if (isEnteringFirstTime)
cell.firstNameTxtLbl.text = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"name"];
break;
case UserName_Cell:
userNameTxtFld = cell.userNameTxtFld;
if (isEnteringFirstTime)
cell.userNameTxtFld.text = [[[NSUserDefaults standardUserDefaults] objectForKey:@"user"] objectForKey:@"userName"];
isEnteringFirstTime = NO;
break;
default:
break;
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
【讨论】:
以上是关于带有 UILabel 内容的 UITableViewCell 在滚动时发生变化的主要内容,如果未能解决你的问题,请参考以下文章
根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小