我在tableView的单元格中有一些文本字段和标签,我需要在按下按钮时重置为空。我无法通过reloadData调用并将cellForRowAtIndexPath中的所有内容设置为@“”来执行此操作,因为在某些情况下会重新加载表并且我需要保留值。
所以唯一的选择是让我以某种方式遍历每个文本字段或标签,并单独将其文本设置为@“”。但是如何访问单元格,然后拉出文本字段或标签?请记住,我的表也包含不同类型的自定义单元格。
我认为最好用标签做,但我不知道如何访问单元格的'viewWithTag'调用。如果有这样的事情。
编辑添加了创建文本字段的代码块
BaseTableViewCell *baseCell = (BaseTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellWithIdentifier];
if (baseCell == nil){
baseCell = [[BaseTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellWithIdentifier];
BaseTextField *rightText = [[BaseTextField alloc] initWithFrame:CGRectMake(150, 7, 150, 31)];
rightText.placeholder = tableValues.key;
rightText.font = [UIFont systemFontOfSize:14];
rightText.tag = (indexPath.section + 1) + (indexPath.row + 1);
rightText.delegate = self;
[baseCell addSubview:rightText];
}
NSLog(@"resetting text");
baseCell.selectionStyle = UITableViewCellSelectionStyleNone;
baseCell.backgroundColor = [UIColor clearColor];
baseCell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
baseCell.textLabel.text = tableValues.value;
return baseCell;
}
答案 0 :(得分:2)
如果您拥有“数据模型”并将其视为“真相”,这类问题往往会自行解决。换句话说,始终从数据中填充tableview的每个单元格。你可以有一两个简单的数组,或者更复杂的数组。如果你想删除任何东西,请删除模型中的值并重新加载表。
如果你想以这样的方式做事,这个SO answer将帮助你遍历你的tableview;但是,我建议您更新数据并调用reload tableview。
答案 1 :(得分:0)
使用UITableViews
- (NSArray *)visibleCells
为您提供所有单元格,然后遍历单元格子视图并重置标签。
答案 2 :(得分:0)
有一个名为visibleCells
的UITableView属性,它是您可以看到的所有单元格的数组。这就是你需要改变的一切吗?否则你需要循环遍历所有单元格并使用-numberOfSections
,-numberOfRowsInSection
和-cellForRowAtIndexPath:
答案 3 :(得分:0)
UIView有一个你可以设置的标签属性。
UITextField *textField = [UITextField alloc] initWithFrame:CGRectMake(10, 10, 200, 28)];
textField.tag = 20;
通常,UITableView会重复使用单元格,因此当单元格重新加载不同内容时可能会出现问题。
您应该从表格视图中单独管理数据。
答案 4 :(得分:0)
如果我理解你的问题是正确的,你不是通过访问单元格,而是通过更改用于填充单元格的数组来实现的。设置自定义对象中的任何字段,或字典中的值(如果您使用的是字典数组)到@“”。