Я создаю серию текстовых полей программным образом с использованием тегов. Я хочу иметь доступ к данным в каждом текстовом поле, но он продолжает возвращаться к последнему тегу.Как вызвать тегированное текстовое поле
В этом примере я создаю 10 текстовых полей. Когда вы нажимаете на поле, оно должно превращать это поле в синий, но оно всегда превращает последнее синее поле.
Как получить доступ к тегам полей, чтобы я мог добраться до правильного текстового поля?
Я добавил NSlog для проверки отправителя #.
@implementation ViewController
@synthesize name = _name ;
- (void)viewDidLoad
{
[super viewDidLoad];
int y = 20 ;
for(int i=1; i <= 10; i++)
{
CGRect frame = CGRectMake(20, y, 100, 30) ;
name = [[UITextField alloc] initWithFrame:frame];
[name setTag:i] ;
[name setBackgroundColor:[UIColor whiteColor]] ;
[name addTarget:self action:@selector(makeBlue:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:name];
y += 38;
}
}
- (void)makeBlue:(id)sender
{
int i = (int)[sender tag] ;
[name setTag:i] ;
NSLog(@"%d", i);
[name setBackgroundColor:[UIColor blueColor]] ;
}
EDIT: Это здорово. Спасибо. Это, безусловно, решило одну из моих проблем. Наверное, я ожидал другого ответа, который привел бы меня в направлении решения моей второй проблемы. Я хочу взять ввод с пометкой текстового поля, чтобы использовать его в другом месте. У меня та же проблема, что я получаю только данные из последнего текстового поля.
- (void)viewDidLoad
{
[super viewDidLoad];
int y = 20 ;
for(int tag=1; tag <= 10; tag++)
{
CGRect frame = CGRectMake(20, y, 100, 30) ;
name = [[UITextField alloc] initWithFrame:frame];
[name setTag:tag] ;
[name setBackgroundColor:[UIColor whiteColor]] ;
[name addTarget:self action:@selector(makeItSo:) forControlEvents:UIControlEventEditingDidEnd];
[self.view addSubview:name];
[name setDelegate:self] ;
y += 38;
}
}
- (void)makeItSo:(id)sender
{
int tag = (int)[sender tag] ;
[name setTag:tag] ;
NSString * aName = [name text] ;
NSLog(@"%@", aName) ;
}
В этом примере я не нужно снова использовать SetTag в методе makeItSo, но я не знаю, как получить значение из определенного тега.
Это то же самое решение. Фокус в том, чтобы получить ссылку на правильное представление/текстовое поле. После этого вы можете использовать обычные методы для доступа к значению/изменению цвета или делать все, что хотите. – Rakesh