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

Cocoa touch 如何迭代视图中的所有控件,cocoa-touch,Cocoa Touch,我有一个静态表视图控制器。在一些单元格中,我有文本框。我想一次启用或禁用所有文本框。我知道我可以做类似的事情 self.nameTextField.Enabled = NO; self.ageTextField.Enabled = NO; self.hairColorTextField.Enabled = NO; 但必须有更优雅的东西。差不多 for (UIControl* control in self.allChildControls) { // <-- I totally

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

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;
    }
}

for(self.allChildControls中的UIControl*控件){/如果您有一个
static
tableviewController,我假设您不允许用户添加/删除单元格。如果是这种情况,您的问题很简单。您只需要向每个
UITextField
对象添加一个
outlet
,并将其
userInteractionEnabled
属性切换为否

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

希望这有帮助:)

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

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


Soo…你的问题是什么?:)如果你需要深入研究整个视图结构,这需要递归完成。所以,让我看看我是否正确…当我在TVC中执行self.view.subview时,我得到了2个UIImageView子视图。这根本不是我期望的。我将尝试递归到它们的子视图中,看看我得到了什么。谢谢。@SigmundFloyd@我不知道你的VC的结构是什么,但是你应该在你的
UITextFields
的直接父对象的子视图上迭代,或者你可以像上面所说的那样递归地进行。祝你好运!谢谢你,但是,这正是我试图避免的模式。我的目标是编写一次代码,并且忘记在添加更多元素时必须修改它坐到桌子上。
for (UIView *subview in self.view.subviews) {
    //check by class or tag
}