在 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 纠正它的主要内容,如果未能解决你的问题,请参考以下文章

在文本字段中键入时在文本字段字符之间添加连字符

无法通过单击选择文本字段(Swift)

在 UISearchController 文本字段中键入时导航栏消失

键入另一个文本字段时,动态文本字段数据将丢失

如何使用软键盘在输入编辑文本字段区域中键入自定义字体? [关闭]

如何使用 Java 在 Selenium WebDriver 的隐藏字段中键入一些文本