添加另一个部分时将编辑的文本保留在自定义单元格中([tableView 刷新数据])

Posted

技术标签:

【中文标题】添加另一个部分时将编辑的文本保留在自定义单元格中([tableView 刷新数据])【英文标题】:Keep edited text in custom cell when adding another section ([tableView refresh data]) 【发布时间】:2014-08-30 22:06:02 【问题描述】:

我有一个带有自定义 UITableViewCell 的 nib 文件和一个带有 TableView 的视图控制器,每个部分包含三个自定义单元格。我还有一个按钮,按下时会添加一个带有另外三个自定义单元格的新部分。

我的问题是,我有一个 placeholderArray = @"Name", @"Position", @"Email";用于设置每个单元格的文本。和 advisorArray 包含三个文本字段的用户输入。用户输入保存到此数组中,但当用户按下按钮添加另一组单元格时,原来的三个单元格文本将更改回 textFieldArray 而不是用户文本。 我知道 [tableView refreshData] 是导致此问题的原因,但我不知道另一种将另一个部分添加到 tableView 的方法。

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return 3;


- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
return sections;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:@"myCell"];
cell.tag = indexPath.row;

[cell.textField setText:[self.placeholderText objectAtIndex:indexPath.row]];

cell.textField.delegate = self;
cell.textField.tag = indexPath.row;

return cell;



- (void)textFieldDidEndEditing:(UITextField *)textField

if (textField.tag == 0) 
    self.nameString = textField.text;
    [self.advisorsArray replaceObjectAtIndex:0 withObject:self.nameString];

if (textField.tag == 1) 
    self.positionString = textField.text;
    [self.advisorsArray replaceObjectAtIndex:1 withObject:self.positionString];

if (textField.tag == 2) 
    self.emailString = textField.text;
    [self.advisorsArray replaceObjectAtIndex:2 withObject:self.emailString];




- (IBAction)addAdvisor:(id)sender 
sections++;
[self.tableView reloadData];

【问题讨论】:

【参考方案1】:

self.placeholderArray 是什么

[cell.textField setText:[self.placeholderText objectAtIndex:indexPath.row]];

实际数据存储在哪里。您的意思是使用self.advisorsArray 吗?

【讨论】:

对不起,我不清楚。 placeholderArray 是包含@"Name"、@"Position"、@"email" 的数组。 advisorsArray 是包含来自 cell.textField 的数据的数组 placeholderText 数组只包含 textFields 的占位符文本..."Name", ".", "."它没有改变。 advisorArray 是包含用户输入的数组。 问题不在于保存数据,而是保存到数组中。但是,当我点击 addAdvisor 按钮在新部分中添加另一组 textFields 时,原始 textFields 文本会变回占位符文本,而不是保持用户输入的文本 据我了解,表格会重新加载,并且您使用 cellForRowAtIndexPath 中 self.placeholderText 中的数据,这会将 txt 设置回原始文本 是的,这就是我卡住的地方。我不知道如何使用 self.placeholderText 设置新单元格并保持旧单元格原样

以上是关于添加另一个部分时将编辑的文本保留在自定义单元格中([tableView 刷新数据])的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义单元格中同步选择文本视图的事件?

如何在自定义表格视图单元格中保存文本字段

如何在自定义单元格中点击以编程方式添加的 UiImageViews 推送新视图

如何从单元格中另一个项目的手势获取单元格引用

如何查找单元格中是不是包含部分文本并引用另一列数据

在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath