ios从uitableViewCell中的文本字段获取文本值

Posted

技术标签:

【中文标题】ios从uitableViewCell中的文本字段获取文本值【英文标题】:ios get text value from textfield in tableViewCell 【发布时间】:2015-10-30 11:00:03 【问题描述】:

在我的 ViewController 中,我创建了一个名为 UITextField *txtMyName; 的文本字段 之后,我将 textField 添加到 tableViewCell [cell addSubview:txtMyName];

我可以在我的 textField 中编辑文本,但是当我从 textField _strFullName = txtMyName.text; 获取文本时

但是,它得到的是空值。

我该如何解决这个问题!

*****已编辑****

if (indexPath.row == 0) 
        [self setFrameTextField:cell];
        [self CustomTextField:cell :txtMyName];
        if ([[dict_infoFriend objectForKey:@"Fullname"] isEqualToString:@" "]) 
            txtMyName.placeholder = @"Name";
        
        else
            txtMyName.text = [dict_infoFriend objectForKey:@"Fullname"];
        
        [cell addSubview:txtMyName];
    
else if (indexPath.row == 1)
        button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
            button.frame = CGRectMake(cell.frame.size.width - 10, 0, 130, 40);
        
        else
            button.frame = CGRectMake(cell.frame.size.width / 2 - 65, 0, 130, 40);
        
        [self CustomBTN:button];
        [button addTarget:self action:@selector(ClickDone) forControlEvents:UIControlEventTouchUpInside];
        [cell addSubview:button];
    

【问题讨论】:

_strFullName = cell.txtMyName.text;做吧 表格视图中有多少个单元格?? 不!我不能调用 cell.txtMyName.text。因为,我不是在 TableViewCell 中创建的。 我在 myViewController 中创建,然后添加到单元格以显示在 tableView 中 你有什么按钮可以获取编辑后的文本吗?或者你必须在没有交互的情况下获得它? 【参考方案1】:

由于您已经将文本字段添加到表格单元格中,因此您必须先获取单元格,然后使用文本字段的标签才能获取文本。

这样试试,

假设您有 txtMyName.tag = 100 之类的文本字段标签

-(void) ClickDone 
      NSIndexPath *indexPath = [[NSIndexPath alloc] indexPathForRow:0 inSection:0];
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:lastIndexPath];
     UITextField *txtField = (UITextField *)[cell viewWithTag:100];
     _strFullName = txtField.text;
  

【讨论】:

成功了。谢谢。但是,当点击完成时,它会创建 UITextField,所以它会占用内存 如果是这样你可以马上得到这样的文字,_strFullName = ((UITextField *)[cell viewWithTag:100]).text @iosDeveloper 因为我们还没有为celltxtField 创建任何alloc,所以它不为它保存内存。只是我们正在使用 indexpath 和 tag 获取已经分配的对象。所以,它不会占用任何内存。 我明白了!谢谢。【参考方案2】:

您还没有为您的文本字段分配内存,这就是您能够编辑但无法检索它的原因。只需写 txtMyName = [[UITextfield alloc]init]; 你可以像 txtMyName = [[UITextfield alloc]initWithFrame:CGRectMake(x,y,width,height)]; 这样将框架分配给文本字段,一旦你将内存分配给你的文本字段,那么你将从文本字段中检索文本

【讨论】:

我已经为我的文本字段分配了内存和 setframe。 txtMyName = [[UITextField alloc]initWithFrame:CGRectMake(cell.frame.size.width - 100, 0, 300, 40)]; 这是我为 textField 分配内存和框架的方法。 [self setFrameTextField:cell];你可以在我的代码中看到。

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

如何从目标c中的uitableViewCell取回文本字段数据?

从 uitableviewcell 内的文本字段中关闭 iPad 上的键盘

是否有带有标签和文本字段的可重用 UITableViewCell?

滚动时自定义 UITableViewCell 中的 UITextFields 文本出现在其他单元格中

将文本移动到 UITableViewCell 中的下一个文本字段

如何快速从 UITableViewCell 动态中获取文本字段的值?