2017-05-09 5 views
0

ラベルのループからどのラベルがタップされているかを取得する方法を教えてください。私はループ内に4つのラベルがあり、私はタグが3であるラベルをクリックしたい場合は、私はすでに隠されているビューに他のラベルが表示される必要があります、どのように私はこれを得ることができますか?目的のcのユーザータップジェスチャーでラベルのタグを取得する方法

CGFloat y1 = 100.0; 
CGFloat x1 = 30.0; 
CGRect rect1 = CGRectMake(x1, y1, 100, 30); 
for (int i = 0; i < 4; i++) 
{ 

label = [[UILabel alloc] initWithFrame:rect1]; 
label.tag = 4+i; 
label.textAlignment = NSTextAlignmentCenter; 
label.backgroundColor = [UIColor blueColor]; 
label.textColor = [UIColor whiteColor]; 
label.font = [UIFont fontWithName:@"Verdana-Bold" size:17.0]; 
    label.text = @"Hello"; 
    label.userInteractionEnabled = YES; 

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotTapped:)]; 
    [label addGestureRecognizer:tap]; 
[self.view addSubview:label]; 

    label2 = [[UILabel alloc] initWithFrame:CGRectMake(200, y1, 50, 30)]; 
    label2.tag = 100+i; 
    label2.textAlignment = NSTextAlignmentCenter; 
    label2.backgroundColor = [UIColor yellowColor]; 
    label2.textColor = [UIColor whiteColor]; 
    label2.font = [UIFont fontWithName:@"Verdana-Bold" size:17.0]; 
    label2.text = @"World"; 
    label2.hidden = YES; 
    [self.view addSubview:label2]; 
    rect1.origin.y += 45; 
} 

}

-(void)gotTapped:(UITapGestureRecognizer*)sender { 
    for (UILabel *v in label2) { 
    v.hidden = !v.hidden; 
    switch(((UITapGestureRecognizer *)sender).view.tag) 
     { 
      case 1: 
       NSLog(@"Clicked on label 1"); 
       break; 
      case 2: 
       NSLog(@"Clicked on label 2"); 
       break; 

}

答えて

1

答えを更新しました。

uはウルのコード内のいくつかの間違った座標がラベル2のためにそれを確認しました:

y1=y1+45;// extra line u need to add 




CGFloat y1 = 40; 
CGFloat x1 = 30.0; 
CGRect rect1 = CGRectMake(x1, y1, 100, 30); 

for (int i = 0; i < 4; i++) 
{ 

    label = [[UILabel alloc] initWithFrame:rect1]; 
    label.tag = i+1; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.backgroundColor = [UIColor blueColor]; 
    label.textColor = [UIColor whiteColor]; 
    label.font = [UIFont fontWithName:@"Verdana-Bold" size:17.0]; 
    label.text = @"Hello"; 
    label.userInteractionEnabled = YES; 

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotTapped:)]; 
    [label addGestureRecognizer:tap]; 
    [self.view addSubview:label]; 

    label2 = [[UILabel alloc] initWithFrame:CGRectMake(150, y1, 50, 30)]; 

    label2.tag = i+100; 
    label2.textAlignment = NSTextAlignmentCenter; 
    label2.backgroundColor = [UIColor redColor]; 
    label2.textColor = [UIColor whiteColor]; 
    label2.font = [UIFont fontWithName:@"Verdana-Bold" size:8]; 
    label2.text = [NSString stringWithFormat:@"%@%ld",@"world",(long)label2.tag]; 
    label2.hidden = YES; 
    [self.view addSubview:label2]; 
    rect1.origin.y += 45; 
    y1=y1+45; 

    NSLog(@"tag values of label2 are %ld",label2.tag); 

} 

// UITapGestureRecognizerアクションはい、それはラベルがあるログを示すために正常に動作して

-(void)gotTapped:(UITapGestureRecognizer*)sender { 


    NSLog(@"%ld",(((UITapGestureRecognizer *)sender).view.tag)); 

    int num= 99 +(int)(((UITapGestureRecognizer *)sender).view.tag); 
    NSLog(@"%d",num); 

    UILabel *label3 = [self.view viewWithTag:num]; 
    label3.hidden = NO; 


      switch(((UITapGestureRecognizer *)sender).view.tag) 
     { 
      case 1: 
       NSLog(@"Clicked on label 1"); 



       break; 
      case 2: 
       NSLog(@"Clicked on label 2"); 
       NSLog(@"%ld",100 +((UITapGestureRecognizer *)sender).view.tag) ; 

       break; 
      case 3: 
       NSLog(@"Clicked on label 3"); 
       NSLog(@"%ld",100 +((UITapGestureRecognizer *)sender).view.tag) ; 

       break; 
      case 4: 
       NSLog(@"Clicked on label 4"); 
       NSLog(@"%ld",100 +((UITapGestureRecognizer *)sender).view.tag) ; 

       break; 

     } 
} 
+0

クリックしたが、タグ3でラベルをクリックしたときに私の隠れたラベルを取得したい場合はどうすればよいのですか? – Alex

+0

私の隠れたラベルのためのあなたの答えを更新してください私は受け入れていただきありがとうございますありがとうございます。 – Alex

+0

label2は最初に非表示にされています – Alex

関連する問題