如何在不创建引用插座的情况下访问静态 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 中的文本字段?的主要内容,如果未能解决你的问题,请参考以下文章
在不创建新类的情况下访问自定义 UITableViewCell 中的 UITextField?
JAVA如何在不复制新实例引用的情况下更改实例字段值[重复]