TableView中的所有UITextField

时间:2014-04-03 09:58:11

标签: objective-c uitableview

我在使用自定义UITextFields

检查我的UITableView中是否填写了所有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

3 个答案:

答案 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); }