Возможно ли установить текстовое поле для UITextField для нескольких объектов из цикла, используя setValue: forKey :? Я немного смущен, если мне нужно каким-то образом указать «текст» в имени свойства, или если мне не хватает чего-то другого?Настройка текста UITextField в цикле?
// INTERFACE
@property(nonatomic, retain) IBOutlet UITextField *textFieldBit_01;
@property(nonatomic, retain) IBOutlet UITextField *textFieldBit_02;
@property(nonatomic, retain) IBOutlet UITextField *textFieldBit_03;
@property(nonatomic, retain) IBOutlet UITextField *textFieldBit_04;
@property(nonatomic, retain) IBOutlet UITextField *textFieldBit_05;
.
// IMPLEMENT
@synthesize textFieldBit_01;
@synthesize textFieldBit_02;
@synthesize textFieldBit_03;
@synthesize textFieldBit_04;
@synthesize textFieldBit_05;
for(unsigned int counter=1; counter<=5; counter++) {
NSString *propertyName = [[NSString alloc] initWithFormat:@"textFieldBit_%02d.text",counter];
NSString *propertyValue = [[NSString alloc] initWithFormat:@"%d", counter];
[self setValue:propertyValue forKey:propertyName];
[propertyName release];
[propertyValue release];
}
EDIT_001
Может быть, я должен попытаться прояснить мой вопрос немного: я, по существу пытается установить текст на один из 5 UITextFields каждый раз вокруг петли. Я мог бы использовать «if» или «switch», но это немного похоже на overkill. Я думал, может быть, setValue: forKey: позволит мне сделать это, построив уникальный ключ во время каждой итерации и используя один вызов.
if(counter == 1) [textFieldBit_01 setText:@"%02d", 1];
if(counter == 2) [textFieldBit_02 setText:@"%02d", 2];
if(counter == 3) [textFieldBit_03 setText:@"%02d", 3];
if(counter == 4) [textFieldBit_04 setText:@"%02d", 4];
if(counter == 5) [textFieldBit_05 setText:@"%02d", 5];
EDIT_002
NSString *propertyName = [[NSString alloc] initWithFormat:@"labelBit_%02d.text",counter];
NSString *propertyValue = [[NSString alloc] initWithFormat:@"%d", geoTag];
[self setValue:propertyValue forKeyPath:propertyName];
Спасибо за ответ, теперь я понимаю, куда я шел неправильно, что я использовал был SetValue: forKey: когда в ситуации, когда мне нужно, чтобы получить доступ к «labelBit_01 .text»Я должен был с помощью SetValue: forKeyPath:
Гэри
Большое спасибо, SetValue: forKeyPath: вместо SetValue: forKey: :) – fuzzygoat