Очистить все текстовые поля с помощью цикла for? - PullRequest
0 голосов
/ 01 декабря 2010

Я использовал:

IBOutlet UITextField *text1, *text2;

для ссылки на мои текстовые поля.

И я очищаю каждый, используя:

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

Если я хочу очистить все сразу, используя цикл for, как мне написать код?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2010

Вы должны назначить тег для каждого textField (скажем, 1,2).

Тогда ваш код должен выглядеть следующим образом:

for(int i=1; i<=2;i++)
{
    UITextField *tf=(UITextField *)[self.view viewWithTag:i];
    [tf setText:@""];
}
0 голосов
/ 01 декабря 2010

Заголовок:

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

Инициализация:

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

Установка пустого текста:

for(UITextField *text in textFields) {
  [text setText: @""];
}
0 голосов
/ 01 декабря 2010
for (UIView *aSubview in self.subviews) {
    if ([aSubview isKindOfClass:[UITextField class]]) 
        [(UITextField *)aSubview setText:nil];
}
0 голосов
/ 01 декабря 2010

Если бы вы использовали свойства для текстовых полей, вы могли бы сделать это:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...