如何通过iOS上的UITextFields进行枚举

Ale*_*lan 3 uitextfield uiview fast-enumeration ios

通过子视图枚举查找文本字段的正确方法是什么?

NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];

for (UIView *view in [self.view subviews]) {
    if ([view isKindOfClass:[UITextField class]]) {            
        [mutableTFs addObject:view];
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];

for (UITextField *textField in [self.view subviews]) {
    [mutableTFs addObject:textField];
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是正确的措辞,但我不明白的是,如果它是顶级方法,你如何将它从视图转换为文本字段?

alb*_*amg 10

通过子视图枚举查找文本字段的正确方法是什么?

第一种方法是正确的方法.第二种方法将迭代所有子视图,而不仅仅是带有类型的子视图UITextField.它中的类型for()只是编译器的提示.

有关更多信息,请参阅此问题.

你如何将它从视图转换为文本字段?

这就是类型转换的目的.

for (UIView *view in [self.view subviews]) {
    if ([view isKindOfClass:[UITextField class]]) {
        // you don't need to cast just to add to the array         
        [mutableTFs addObject:view];
        // typecasting works as it does in C
        UITextField *textField = (UITextField *)view;
        // do something with textField
    }
}
Run Code Online (Sandbox Code Playgroud)