如何在其中创建带有textField的UITableViewCell?我已经在StackOverflow上经历了一些类似的问题,但是我发现它们中的大部分都处理了tableView的显示总是不变的情况,并且确切地知道哪些值去了哪里。对于我的实现,每个部分的节数和行数由用户确定,可以是任何内容。我已经能够在单元格中获得textField,但是当我滚动表格并且单元格从视图中消失时,我发现输入的任何文本都丢失了。这就是我到目前为止所拥有的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.myTableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
UITextField *myTextField = [[UITextField alloc]
initWithFrame:CGRectMake(215, (cell.contentView.bounds.size.height-30)/2, 60, 30)];
[myTextField setDelegate: self];
myTextField.tag = indexPath.section;
NSLog(@"%ld", (long)myTextField.tag);
myTextField.placeholder = @"0%";
myTextField.borderStyle = UITextBorderStyleRoundedRect;
[cell addSubview:myTextField];
cell.textLabel.text = self.cellLabels[indexPath.section];
return cell;
}
我知道问题是什么,我只是想弄清楚一个解决方法。即使我以某种方式存储用户在数组中的每个textField中输入的所有内容,当它从屏幕外返回时,我不能为每个字段设置文本,因为再次调用cellForRowAtIndexPath
并重新绘制textField。
这就是我想要的,功能明智的。但“Paper1”和“Paper2”可能是不同的部分......
答案 0 :(得分:1)
使用视图模型。将每个单元格的文本存储在数组中,然后在cellForRowAtIndexpath中设置文本。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.myTableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
UITextField *myTextField = [[UITextField alloc]
initWithFrame:CGRectMake(215, (cell.contentView.bounds.size.height-30)/2, 60, 30)];
[myTextField setDelegate: self];
myTextField.tag = indexPath.section;
NSLog(@"%ld", (long)myTextField.tag);
myTextField.placeholder = @"0%";
myTextField.borderStyle = UITextBorderStyleRoundedRect;
myTextField.text = [self textForCellAtIndexPath:indexPath];
[cell addSubview:myTextField];
cell.textLabel.text = self.cellLabels[indexPath.section];
return cell;
}