获取 customtableview 文本字段的 indexPath

Posted

技术标签:

【中文标题】获取 customtableview 文本字段的 indexPath【英文标题】:Get indexPath for the customtableview textfield 【发布时间】:2017-08-21 02:49:26 【问题描述】:

我在MyCustomCell 中有一个文本字段,并在cellForRowIndexPath tableview 委托中设置了文本字段委托。当用户更改文本字段值并调用textFieldShouldEndEditing。一切正常。

但是,我想知道如何知道更改了哪个文本字段(indexPath)?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *cellIdentifier = @"Cell";

    MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) 
      
        // use this if you created your cell with IB
        cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil] objectAtIndex:0];   

        // otherwise use this  
        cell = [[[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 


        // now set the view controller as the text field delegate  
        cell.textField.delegate = self;
    

    // configure cell...

    return cell;


- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

    [textField resignFirstResponder];
    return YES;

【问题讨论】:

【参考方案1】:

cellForRowAtIndexPath 方法中设置UITextField 标签。如果您的表格视图中只有一个部分,您可以将该行设置为标签。像这样。

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

在您的textFieldShouldEndEditing 方法中,您可以检查标签。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

    int row = textField.tag;

    [textField resignFirstResponder];
    return YES;

【讨论】:

【参考方案2】:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField if ([[[textField superview] superview] isKindOfClass:[MyCustomCell class]]) MyCustomCell *cell = (MyCustomCell *)[[textField superview] superview]; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; // this is what you want. return YES;

【讨论】:

【参考方案3】:

你可以试试这个:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *cellIdentifier = @"Cell";

    MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) 
      
        // use this if you created your cell with IB
        cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil] objectAtIndex:0];   

        // otherwise use this  
        cell = [[[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 


        // now set the view controller as the text field delegate  
        cell.textField.delegate = self;
        textField.tag = indexPath.Row;
    

    // configure cell...

    return cell;


- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

    NSLog("Selected Cell is:%@",textField.tag);
    [textField resignFirstResponder];
    return YES;

【讨论】:

以上是关于获取 customtableview 文本字段的 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

CustomTableView 从不更新

如何在 CustomTableView 中显示 ipad 库视频

将 customTableView 添加到未正确加载 json 数据的视图上

如何为 CustomTableView Cell 应用 layoutConstraints

获取表格视图中按钮单击的文本字段值

从一个文本字段中获取文本,对其进行更改并传递给另一个文本字段