我在使用自定义UITextFields
UITableViewCell classes
时遇到了一些问题
我试图用这种代码做点什么:
for (UITextField* textField in self.view.subviews ){
NSLog(@"Text: %@", textField.text);
}
这就是错误:
-[UITableView text]: unrecognized selector sent to instance 0x10b034400
Oke,所以我似乎试图让UITableView说出它的文本值,所以这并不好。但是我怎样才能获得TableViewCell的TextFields?所以我可以检查用户是否填写了所有内容并且可以保存信息。
GRZ
答案 0 :(得分:1)
您需要获取对UITableViewCell的引用并对cell.contentView进行枚举,所有控件都存储在contentView单元属性中,而不是直接查看。如果你在单元格上有一些除UITextField之外的其他控件,你应该检查视图是否是UITextField的类型。
另一件事是你无法获得不可见的单元格的UITextField引用,因为它们很可能会出列。
这为您提供了所有可见的表格视图单元格,您只需要枚举它:
NSArray *arr = [self.tableView visibleCells];
for (UITableViewCell *cell in arr) {
for (UIView *v in cell.contentView.subviews) {
if ([v isKindOfClass:[UITextField class]]) {
UITextField *textField = (UITextField *) v;
NSLog(@"Text: %@", textField.text);
}
}
}
答案 1 :(得分:-1)
因为视图的子视图不一定是UITextField对象,所以试试这个:
for (UIView *subview in self.view.subviews //be sure you are looping through the right view){
if ([subview isKindOfClass:[UITextField class]]) {
UITextField *textField = (UITextField *) subview;
NSLog(@"Text: %@", textField.text);
}
}
答案 2 :(得分:-1)
如果是在iOS 7中,您的文本字段应该位于Cell的子视图中的第一个视图中
for (UITextField* textField in self.view.subviews[0] ){
NSLog(@"Text: %@", textField.text);
}