在 UITableview 中,键入的文本字段值在不同的单元格中重复,如何使用目标 c 纠正它
Posted
技术标签:
【中文标题】在 UITableview 中,键入的文本字段值在不同的单元格中重复,如何使用目标 c 纠正它【英文标题】:In UITableview the typed textfield values is getting repeated in different cells ,how to rectify that using objective c 【发布时间】:2017-10-30 05:38:29 【问题描述】:我是我的表视图中的目标 c 的新手,我在 uitableview 单元格中动态填充了文本字段,它工作正常,但是每当用户在 uitextfield 中键入值时,值就会重复到另一个单元格文本字段中,谁能帮我解决这个问题错误。这是我的示例代码,我还添加了下面的示例屏幕截图供您参考。
#import "TableViewController.h"
#import "TableViewCell.h"
@interface TableViewController ()<UITableViewDelegate>
@end
@implementation TableViewController
- (void)viewDidLoad
[super viewDidLoad];
self.mytableview.dataSource=self;
self.mytableview.delegate=self;
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return 20;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellidentifier=@"cell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (!cell)
cell= [[TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
return cell;
@end
【问题讨论】:
请更新您的问题。我看不到图片,您的文本字段在哪里? 感谢您的回复我更新了我的问题 我需要查看设置UITextField
的代码以帮助您解决问题。
在tableview自定义单元格类[@interface TableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UITextField *textfield;]
您的问题是当您在文本字段中键入一些文本时,该文本也会出现在另一个文本字段中,对吗?有没有使用 UITextFieldDelegate 的方法?
【参考方案1】:
实际上,文本出现在另一个单元格上,因为TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier]
创建单元格时该单元格被重复使用
将此代码添加到您的TableViewCell.m
- (void)prepareForReuse
self.textfield.text = @"";
TableViewController.m
#import "TableViewController.h"
#import "TableViewCell.h"
#define numberOfRow 20;
@interface TableViewController ()<UITableViewDelegate, UITextFieldDelegate>
@property (nonatomic, strong) NSMutableArray* texts;
@end
@implementation TableViewController
- (void)viewDidLoad
[super viewDidLoad];
_texts = [[NSMutableArray alloc] init];
for (int i = 0; i < numberOfRow; i++)
[_texts addObject:@""];
self.mytableview.dataSource=self;
self.mytableview.delegate=self;
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return numberOfRow;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellidentifier=@"cell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier];
if (!cell)
cell= [[TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier];
cell.textField.text = _texts[indexPath.row];
cell.textField.tag = indexPath.row;
cell.textField.delegate = self;
return cell;
- (void)textFieldDidEndEditing:(UITextField *)textField
_text[textField.tag] = textField.text;
@end
【讨论】:
通过使用此代码,单元格值不会重复,但键入的值会隐藏。 滚动后文本会消失,因为您在输入后没有保存文本。每次单元格中的文本更改时,创建一个数组并保存文本。我已经更新了我的答案,请再次检查 欢迎@user19 :D 我还有一个疑问,我遇到了与 Uibutton 相同的问题,请您建议我如何解决该问题 首先,创建一个数组来包含按钮标题,就像我对texts
数组所做的那样。在cellForRowAtIndexPath
中设置按钮的标题。在prepareForReuse
中,将按钮的标题设置为@""。你可以试试;)以上是关于在 UITableview 中,键入的文本字段值在不同的单元格中重复,如何使用目标 c 纠正它的主要内容,如果未能解决你的问题,请参考以下文章
在 UISearchController 文本字段中键入时导航栏消失