2010-12-01 6 views
0

Я использовал:Очистить все текстовые поля, используя цикл for?

IBOutlet UITextField *text1, *text2; 

для ссылки моих текстовых полей.

И очистить каждый из них с помощью:

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

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

ответ

4

U должен назначить тег для каждого TextField (скажем, 1,2)

Тогда ур код должен быть следующим,

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

Отступ ваш код четырьмя пробелами. – 2010-12-01 09:17:08

+0

Спасибо KingofBliss & Marcelo Cantos. – 2010-12-01 09:55:02

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.

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

Заголовок:

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

Initialization:

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

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

for(UITextField *text in textFields) { 
    [text setText: @""]; 
} 
Смежные вопросы