我正在使用标签以编程方式创建一系列文本字段。我希望能够访问每个文本字段中的数据,但它会不断恢复到最后一个标签。
在此示例中,我创建了 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]] ;
}
编辑: 太好了。谢谢你。它确实解决了我的一个问题。我想我期待一个不同的答案,这将引导我解决我的第二个问题。我想从标记的文本字段中获取输入以在其他地方使用它。我有同样的问题,我只从最后一个文本字段中获取输入。
- (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) ;
}
在此示例中,我不需要在 makeItSo 方法中再次使用 setTag,但我不知道如何从特定标记中获取值。