如何迭代视图中的所有控件

时间:2013-06-21 02:38:43

标签: cocoa-touch

我有一个静态表视图控制器。在一些单元格中,我有文本框。我想一次启用或禁用所有文本框。我知道我可以做点什么

self.nameTextField.Enabled = NO; 
self.ageTextField.Enabled = NO;  
self.hairColorTextField.Enabled = NO;  

但必须有更优雅的东西。像

这样的东西
for (UIControl* control in self.allChildControls) { // <-- I totally just made that up.
    if ([control isKindOfClass:[UITextField class]]) {
        control.Enabled = NO;
    }
}

我认为我没有问正确的问题......

2 个答案:

答案 0 :(得分:1)

您可以使用UIView的subviews属性。它包含所有子UI元素。

@property(nonatomic, readonly, copy) NSArray *subviews

UIView Documentation

for (UIView *subview in self.view.subviews) {
    //check by class or tag
}

答案 1 :(得分:0)

如果您有static tableviewController,我假设您不允许用户添加/删除单元格。如果是这种情况,您的问题很简单。您只需要为每个outlet对象添加UITextField,并将其userInteractionEnabled属性切换为否。

self.myTextField.userInteractionEnabled = NO;
self.mySecondTextField.userInteractionEnabled = NO;

希望这会有所帮助:)