使用for循环清除所有文本字段?

时间:2010-12-01 09:02:31

标签: iphone objective-c

我用过:

IBOutlet UITextField *text1, *text2;

用于引用我的文本字段。

我使用以下方法清除每一个:

[text1 setText:@""];
[text2 setText:@""];

如果我想使用for循环一次清除所有内容,我该如何编写代码?

4 个答案:

答案 0 :(得分:4)

您应为每个textField分配标记(例如1,2)。

然后您的代码应如下所示:

for(int i=1; i<=2;i++)
{
    UITextField *tf=(UITextField *)[self.view viewWithTag:i];
    [tf setText:@""];
}

答案 1 :(得分:0)

如果要对文本字段使用属性,可以执行以下操作:

for (int textFieldIndex = 0; textFieldIndex < textFieldCount; textFieldIndex++)
{
    NSString *textFieldName = [NSString stringWithFormat:@"text%i", textFieldIndex];
    UITextField *textField = [self performSelector(NSSelectorWithString(textFieldName))];
    [textField setText:@""];
}

定义属性:

@interface viewController : NSObject
{
    UITextField *_text1;
    ...
}

@property(readwrite, assign) IBOutlet UITextField *text1;
...

@end


@implementation
...
@synthesize text1 = _text1;
...
@end

您可以命名ivar text1并使用@synthesize text1;我使用前缀来避免在方法中意外覆盖实例ivar。此外,您可能希望使用retain代替assign

答案 2 :(得分:0)

for (UIView *aSubview in self.subviews) {
    if ([aSubview isKindOfClass:[UITextField class]]) 
        [(UITextField *)aSubview setText:nil];
}

答案 3 :(得分:0)

部首:

IBOutlet UITextField *text1, *text2;
NSArray *textFields;

初​​始化:

textFields = [NSArray arrayWithObjects: text1, text2, nil];

设置空文本:

for(UITextField *text in textFields) {
  [text setText: @""];
}