标签改变它的价值
Tag changes it value
我不明白为什么标签第三次等于0
UIButton *b1;
- (void)viewDidLoad
{
b1 =[[UIButton alloc] init];
b1.tag = 1;
NSLog(@"Button pressed: %d", b1.tag); // tag = 1
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)funcA:(id)sender // I create mannualy the button b1
{
NSLog(@"Button pressed 2nd: %d", b1.tag); // tag = 1
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.frame = CGRectMake(50, 50, 50, 50);
[b1 setTitle:@"b1" forState:UIControlStateNormal];
[self.view addSubview:b1];
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside ];
}
-(void)funcB:(id)sender //the func of B1
{
NSLog(@"Button 3rd %d", b1.tag); // here the tag = 0
}
我希望我所要求的是可能的。 ^^
当你这样做时:
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
您正在制作一个新按钮。
您可以为此更改代码:
UIButton *b1;
- (void)viewDidLoad
{
[super viewDidLoad];
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.tag = 1;
b1.frame = CGRectMake(50, 50, 50, 50);
[b1 setTitle:@"b1" forState:UIControlStateNormal];
NSLog(@"Button pressed: %d", b1.tag); // tag = 1
// Do any additional setup after loading the view, typically from a nib.
}
- (void)funcA:(id)sender // I create mannualy the button b1
{
NSLog(@"Button pressed 2nd: %d", b1.tag); // tag = 1
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside ];
[self.view addSubview:b1];
}
-(void)funcB:(id)sender //the func of B1
{
NSLog(@"Button 3rd %d", b1.tag); // here the tag = 1
}
在 viewDidLoad
中,您正在创建一个按钮,但没有将其保存在任何地方(您没有使用 b1
实例变量,而是有一个局部变量恰好具有名称 name ) 而不是将它添加到任何视图,因此它将在函数完成时释放。
在 funcA
中,您正在实例化一个完全不同的按钮(不是用户按下的按钮,也不是在 viewDidLoad
中创建和丢弃的按钮)。您也永远不会为这个新按钮设置 tag
。 (坦率地说,根本不清楚什么叫 funcA
;你的故事板上有按钮或类似的东西吗?!?)
最重要的是,如果您希望 funcB
显示您在 funcA
中创建的按钮的 tag
,则必须为该按钮设置 tag
在 funk
.
在 funcB
中,引用 sender
来识别按下了哪个按钮是很有用的,例如:
- (void)createButton
{
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.frame = CGRectMake(50, 50, 50, 50);
b1.tag = 42;
[b1 setTitle:@"b1" forState:UIControlStateNormal];
[self.view addSubview:b1];
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)funcB:(UIButton *)sender
{
NSLog(@"Button tag %d", sender.tag); // the answer is 42
}
我不明白为什么标签第三次等于0
UIButton *b1;
- (void)viewDidLoad
{
b1 =[[UIButton alloc] init];
b1.tag = 1;
NSLog(@"Button pressed: %d", b1.tag); // tag = 1
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)funcA:(id)sender // I create mannualy the button b1
{
NSLog(@"Button pressed 2nd: %d", b1.tag); // tag = 1
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.frame = CGRectMake(50, 50, 50, 50);
[b1 setTitle:@"b1" forState:UIControlStateNormal];
[self.view addSubview:b1];
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside ];
}
-(void)funcB:(id)sender //the func of B1
{
NSLog(@"Button 3rd %d", b1.tag); // here the tag = 0
}
我希望我所要求的是可能的。 ^^
当你这样做时:
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
您正在制作一个新按钮。
您可以为此更改代码:
UIButton *b1;
- (void)viewDidLoad
{
[super viewDidLoad];
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.tag = 1;
b1.frame = CGRectMake(50, 50, 50, 50);
[b1 setTitle:@"b1" forState:UIControlStateNormal];
NSLog(@"Button pressed: %d", b1.tag); // tag = 1
// Do any additional setup after loading the view, typically from a nib.
}
- (void)funcA:(id)sender // I create mannualy the button b1
{
NSLog(@"Button pressed 2nd: %d", b1.tag); // tag = 1
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside ];
[self.view addSubview:b1];
}
-(void)funcB:(id)sender //the func of B1
{
NSLog(@"Button 3rd %d", b1.tag); // here the tag = 1
}
在 viewDidLoad
中,您正在创建一个按钮,但没有将其保存在任何地方(您没有使用 b1
实例变量,而是有一个局部变量恰好具有名称 name ) 而不是将它添加到任何视图,因此它将在函数完成时释放。
在 funcA
中,您正在实例化一个完全不同的按钮(不是用户按下的按钮,也不是在 viewDidLoad
中创建和丢弃的按钮)。您也永远不会为这个新按钮设置 tag
。 (坦率地说,根本不清楚什么叫 funcA
;你的故事板上有按钮或类似的东西吗?!?)
最重要的是,如果您希望 funcB
显示您在 funcA
中创建的按钮的 tag
,则必须为该按钮设置 tag
在 funk
.
在 funcB
中,引用 sender
来识别按下了哪个按钮是很有用的,例如:
- (void)createButton
{
b1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b1.frame = CGRectMake(50, 50, 50, 50);
b1.tag = 42;
[b1 setTitle:@"b1" forState:UIControlStateNormal];
[self.view addSubview:b1];
[b1 addTarget:self action:@selector(funcB:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)funcB:(UIButton *)sender
{
NSLog(@"Button tag %d", sender.tag); // the answer is 42
}