如何在不创建引用插座的情况下访问静态 TableViewcells 中的文本字段?

Posted

技术标签:

【中文标题】如何在不创建引用插座的情况下访问静态 TableViewcells 中的文本字段?【英文标题】:How Can I access the textfields in static TableViewcells without creating referencing outlet? 【发布时间】:2013-02-12 02:44:41 【问题描述】:

我有很多静态放置在静态 TableViewcells 中的文本字段。如何在不为每个文本字段创建引用出口的情况下访问其中的文本?我尝试过对单元格进行子视图。它不工作。有其他选择吗?

我试过这个。它不工作。

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


UITableViewCell *cell = [super tableView:tableView
                   cellForRowAtIndexPath:indexPath];
     for (UIView *subview in [cell subviews])
        if([subview isKindOfClass:[UITextField class]])
            UITextField *inputField = (UITextField *)subview;
            NSLog(@"%@",inputField.text);
        
     

    return cell;

【问题讨论】:

【参考方案1】:

您可以使用 IBOutletCollection。这使您可以将它们全部连接到一个数组,您可以在其中通过索引访问它们,或使用 setValue:forKey: 一次性解决它们。

【讨论】:

我无法创建引用插座或 tableview 集合 :( 但我可以为 cell.any 想法创建插座集合? @Harikrishnan,我不明白您所说的“表视图集合”是什么意思。您是否要为所有单元格制作一个集合? 我现在明白了。谢谢。我不熟悉奥特莱斯系列,这就是原因。现在问题已经解决了。非常感谢。【参考方案2】:

您始终可以遍历单元格的每个子视图以找到UITextField。比如:

NSArray *subviews = [cell subviews];
for (view in subviews) 
    if([view isKindOfClass:[UITextField class]]) 
        //Do what you want with your UITextField
    

【讨论】:

它不适用于静态单元格。 for (UIView *subview in [cell subviews]) if([subview isKindOfClass:[UITextField class]]) UITextField *inputField = (UITextField *)subview; NSLog(@"%@",inputField.text); 【参考方案3】:

按照以下步骤操作:

    tag 设置为您的textField

    textField.tag = kTextFieldTag;
    

    使用tag 检索cell 中的subView

    UITextField *refTextField = [cell viewWithTag:kTextFieldTag];
    

这里,kTextFieldTag 是常量。

【讨论】:

以上是关于如何在不创建引用插座的情况下访问静态 TableViewcells 中的文本字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不公开所有符号的情况下为 iOS 创建静态库

是否可以在不添加服务参考的情况下访问 WCF 服务?

在不创建新类的情况下访问自定义 UITableViewCell 中的 UITextField?

JAVA如何在不复制新实例引用的情况下更改实例字段值[重复]

如何在不传递引用的情况下在 Python 中使用 SyncManager 跨进程共享列表

如何在不使用 TableViewController 的情况下创建分组的 TableView