从 uitableviewcell 获取文本输入

Posted

技术标签:

【中文标题】从 uitableviewcell 获取文本输入【英文标题】:take text input from uitableviewcell 【发布时间】:2011-05-26 12:46:14 【问题描述】:

我正在开发一个应用程序,我需要使用分段表格视图从用户那里获取文本输入。 我从来没有使用表格视图从用户那里获取文本输入。 请看图片了解击球手。

我试过这个In-place editing of text in UITableViewCell?

但这并没有完全满足我想要的。

当我使用以下代码时,我得到的输出与上图不同。

UITextField *txtField=[[UITextField alloc]initWithFrame:CGRectMake(45, 0, cell.frame.size.width, cell.frame.size.height)];
    txtField.autoresizingMask=UIViewAutoresizingFlexibleHeight;
    txtField.autoresizesSubviews=YES;
    [txtField setBorderStyle:UITextBorderStyleRoundedRect];
    [txtField setPlaceholder:@"Type Data Here"];

    if (cell == nil)
    
        cell.accessoryType = UITableViewCellAccessoryNone;
    
    [cell addSubview:txtField];

参见问题 3 和 5 的答案。

谢谢。

【问题讨论】:

为什么您发布的链接不符合要求?请更详细地解释一下您要实现的目标... @sergio:嗨,当我使用链接中给出的代码来解决我的查询时,我看不到与我在我的问题中发布的图像相同的行为。这就是我发布问题的原因。 你能解释一下行为上有什么不同吗?您能否也发布您用于tableView:cellForRowAtIndexPath 的确切代码,这将有很大帮助... @sergio :查看已编辑的问题。 【参考方案1】:

您需要将UITextField 添加到内容视图对应的单元格中,其中您需要文本字段。 您可以通过查看cellForRowAtIndexPath: 中的单元格indexpath.sectionindexpath.row 来选择所需的单元格

例子:

if(indexPath.section == CELL_SECTION) 
    if(indexpath.row == CELL_ROW_INDEX) 
      UITextField *txtField=[[UITextField alloc]initWithFrame:CGRectMake(5, 5, 320, 39)];
      txtField.autoresizingMask=UIViewAutoresizingFlexibleHeight;
      txtField.autoresizesSubviews=YES;
      txtField.layer.cornerRadius=10.0;
      [txtField setBorderStyle:UITextBorderStyleRoundedRect];
      [txtField setPlaceholder:@"Type Data Here"];
      [cell.contentView addSubView:textField];
   

【讨论】:

@iPhonePrg :嗨,我使用了与我第一次尝试相同的代码,但此代码的问题是它添加了简单的文本字段,它的行为与我在我的问题中建议的不同。 这条线是做什么的? txtField.autoresizingMask=UIViewAutoresizingFlexibleHeight; 最后一行应该是[cell.contentView addSubview:txtField];【参考方案2】:

第一件事

    你需要创建一个UITableViewCell的子类。

    该课程将有一个 TextField(TF) 作为属性 访问那个 TF

    为那个 TF 设置标签 while 初始化它。

    在委托方法中 tableView:celForRowAtIndexPath: 通过标签使用方法 tf = 获取该 TF [单元格 viewWithTag:YOUR_TAG];

    现在您可以随心所欲。

    现在假设你想要这个值 在这个方法之外,还有 两种方式

    一个。创建一个全局变量并在其中存储值

    b.先通过cellforRowAtIndexPath的tableView方法找到cell,重复步骤4和5

【讨论】:

【参考方案3】:

您需要一个自定义的UITableViewCell,其中包含UITextfield。您可以为每个单元格的textField 设置tag 以识别它们。如果您想对文本或其他内容进行一些验证,您还可以实现UITextFieldDelegate。然后您可以根据标签获取textfield 的值。

【讨论】:

以上是关于从 uitableviewcell 获取文本输入的主要内容,如果未能解决你的问题,请参考以下文章

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

如何从 UITableView 中的 UITableViewCells 中的 UITextFields 中获取文本并将它们放入数组中(Swift 3)?

如何从 UITableViewCell 输入新视图? (当表格视图从 .plist 获取其信息时)

从 UITableView 获取 UITextField 文本

Swift:如何防止未显示的 UITableViewCells 在滚动时被关闭

从 NSIndexPath 获取 UITableViewCell?