通过按钮操作清除文本字段中的文本或单元格中的标签

时间:2013-02-08 18:44:15

标签: objective-c cocoa-touch uitableview

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

5 个答案:

答案 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)

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