0

我在 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;
}
4

5 回答 5

2

如果您拥有“数据模型”并将其视为“真相”,此类问题往往会自行解决。换句话说,始终从数据中填充表格视图的每个单元格。你可以有一个或两个简单的数组,或者更复杂的东西。如果您想删除任何内容,请删除模型中的值并重新加载表格。

如果您想以这种方式做事,这个SO 答案将帮助您循环浏览您的表格视图;但是,我建议您更新数据并调用 reload tableview。

于 2013-02-08T18:55:27.380 回答
0

使用 UITableViews

- (NSArray *)visibleCells

它为您提供所有单元格,然后循环遍历单元格子视图并重置标签。

于 2013-02-08T18:51:49.893 回答
0

UIView 有一个你可以设置的标签属性。

UITextField *textField = [UITextField alloc] initWithFrame:CGRectMake(10, 10, 200, 28)];
textField.tag = 20;

通常,UITableView 会重用单元格,因此当单元格重新加载不同的内容时,您可能会遇到问题。

您应该考虑将数据与表视图分开管理。

于 2013-02-08T18:55:22.440 回答
0

如果我理解你的问题是正确的,你不要通过访问单元格来做到这一点,而是通过更改用于填充单元格的数组。将自定义对象中的任何字段或字典中的值(如果您使用字典数组)设置为 @""。

于 2013-02-08T18:56:56.627 回答
0

有一个名为 的 UITableView 属性visibleCells,它是您可以看到的所有单元格的数组。这就是你需要改变的全部吗?否则,您将需要遍历所有单元格并将文本字段设置为 @"" 就像您说的那样,使用-numberOfSections,-numberOfRowsInSection-cellForRowAtIndexPath:

于 2013-02-08T18:53:13.737 回答