Which is the correct way of enumerating through sub views to find text fields?
NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];
for (UIView *view in [self.view subviews]) {
if ([view isKindOfClass:[UITextField class]]) {
[mutableTFs addObject:view];
}
}
OR
NSMutableArray *mutableTFs = [[NSMutableArray alloc] init];
for (UITextField *textField in [self.view subviews]) {
[mutableTFs addObject:textField];
}
I know this isn’t the correct wording, but what I don’t understand is if it is the top method, how do you ‘convert’ it from a view to a text field?
The first method is the correct one. The second method will iterate over all the subviews, not just the subviews with type
UITextField. The type in thefor()is only a hint to the compiler.For more information, see this question.
This is what typecasting is for.