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