另一个方法中的 UITableViewCell 文本字段值

Posted

技术标签:

【中文标题】另一个方法中的 UITableViewCell 文本字段值【英文标题】:UITableViewCell text field value in another method 【发布时间】:2017-01-09 08:21:02 【问题描述】:
-(void)sendcomment:(UIButton *)sender

    NSLog(@" send commment server");

    thirdviewcellTableViewCell *dja =[[thirdviewcellTableViewCell alloc] init];
    NSString *vga = [[NSString alloc] init];
    vga=dja.celltext;
    NSLog(@"comment value is %@",vga);
    NSLog(@"comment cell value is %@",dja.celltext);

【问题讨论】:

在此方法中,您将创建一个本地 textField 并尝试获取其文本。但它应该是空的。您应该为该类保存具有全局值的 textField。 【参考方案1】:
-(void)sendcomment:(UIButton *)sender
 
 UIButton *button = (UIButton*)sender;
 NSIndexPath *indexpath = [NSIndexPath indexPathForRow:sender.tag inSection:0];
 UITableViewCell *cell = (UITableViewCell*)[tblView cellForRowAtIndexPath: indexpath];
  // If you have text field
 UITextField *textfiled = (UITextField *)[cell.contentView viewWithTag:yourtextfeildtagvlaue];

// NSString *vga = textfiled.text
 

【讨论】:

【参考方案2】:

如果单元格按住按钮,您可以这样做:

-(void)sendcomment:(UIButton *)sender

    // 1. get the position the button you clicked
    CGPoint correctedPoint = [sender convertPoint:button.bounds.origin toView:self.tableView];

    // 2. find the cell via the position
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:correctedPoint];
    thirdviewcellTableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];;

    // 3. then you can get the TextField value
    NSString *textFieldValue = [[NSString alloc] init];
    textFieldValue = cell.celltext;

【讨论】:

【参考方案3】:

您使用单元格的层次结构获取您的单元格

 -(void)sendcomment:(UIButton *)sender
     
     UIButton *button = (UIButton*)sender;
     NSIndexPath *indexpath = [NSIndexPath indexPathForRow:sender.tag inSection:0];
     UITableViewCell *cell = (UITableViewCell*)sender.superview.superview;// get cell using view hierarchy 
      // If you have text field
     UITextField *textfiled = (UITextField *)[cell.contentView viewWithTag:yourtextfeildtagvlaue];
    // NSString *vga = textfiled.text
     

*

【讨论】:

【参考方案4】:

在您的操作方法中,您可以找到您的 TextField,如下所示: 您可以从 SuperView 中找到 IndexPath。 请参阅下面的代码。

UIView *superView = btn.superview;

while (![superView isKindOfClass:[UITableViewCell class]]) 
    superView = superView.superview;


CustomCell *cell = (CustomCell *)superView;

您将从 cell.yourTextFeld 获得 UITextField 对象。 您可以根据需要使用 TextField。

【讨论】:

以上是关于另一个方法中的 UITableViewCell 文本字段值的主要内容,如果未能解决你的问题,请参考以下文章

当用户滚动 uitableview 时,UITableViewCell 中的文本会被删除

从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?

自定义 uitableviewcell 中的 Uibuttons

UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue

从 UITableViewCell 打开另一个视图

如何在不添加另一个 UIView 的情况下为情节提要中的 uitableViewCell 制作等宽分隔符?