2013-01-07 20 views
9

Tôi đang cố gắng khám phá tiêu đề UIButton cho UIButton được nhấn trong mã sau đây.Cách lấy tiêu đề cho một UIButton khi nó được nhấn

trên viewDidLoad tiêu đề nút output ra cửa sổ Console sử dụng:

 NSLog(@"The button title is %@ ", btn.titleLabel.text); 

Tôi muốn để có được danh hiệu này khi một nút được nhấn để thay thế.

nhờ sự giúp đỡ nào

:)

// Create buttons for the sliding category menu. 
     NSMutableArray* buttonArray = [NSMutableArray array]; 
     NSArray * myImages = [NSArray arrayWithObjects:@"category-cafe-unsel.png", @"category-food-unsel.png", @"category-clothing-unsel.png", @"category-health-unsel.png", @"category-tech-unsel_phone.png" , @"category-tech2-unsel.png", @"catefory-theatre-unsel.png", @"category-travel-unsel.png", nil]; 

     // only create the amount of buttons based on the image array count 
     for(int i = 0;i < [myImages count]; i++) 
     { 
      // Custom UIButton 

      btn = [UIButton buttonWithType:UIButtonTypeCustom]; 

      [btn setFrame:CGRectMake(0.0f, 20.0f, 52.0f, 52.0f)]; 
      [btn setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal]; 
      [btn setImage:[UIImage imageNamed:[myImages objectAtIndex:i]] forState:UIControlStateNormal]; 

      NSLog(@"The button title is %@ ", btn.titleLabel.text); 

      [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
      [buttonArray addObject:btn]; 

      NSLog(@"Button tag is: %d",btn.tag); 

     } 

Trả lời

22

Trong hành động của bạn:

- (void) buttonPressed:(UIButton*) sender { 
    NSLog(@"The button title is %@",sender.titleLabel.text); 
} 

Sửa: Hoặc như nhận xét Iulian: sender.currentTitle, nhưng nó có thể là nil, xem ý kiến ​​của Michael.

+0

Sự khác biệt giữa điều này và 'sender.currentTitle' là gì? –

+0

Không có. Bạn nói đúng, tôi sẽ chỉnh sửa câu trả lời. – Zaphod

+0

Tôi đã không nói rằng nó không phải là, tôi chỉ hỏi. Và hiện tại 'currentTitle' là' nil' nhưng 'titleLabel.text' không phải. –

11

Bạn nên có chức năng ở đâu đó ...

- (void)buttonPressed:(id)sender 

Chỉ cần đặt này bên trong nó ...

- (void)buttonPressed:(id)sender 
{ 
    UIButton *someButton = (UIButton*)sender; 

    NSLog(@"The button title is %@ ", [someButton titleForState:UIControlStateNormal]); 

    //You should also be able to use... 
    //NSLog(@"The button title is %@ ", someButton.titleLabel.text); 
} 
3
NSString * strButtonTitle = [btnButton titleForState:state]; 

nơi nhà nước:

UIControlStateNormal, 
UIControlStateHighlighted, 
UIControlStateDisabled, 
UIControlStateSelected, 
UIControlStateFocused, 
UIControlStateApplication, 
UIControlStateReserved 

Đối với yêu cầu của bạn

NSString * strButtonTitle = [btnButton titleForState:UIControlStateSelected]; 

Đây là phương pháp để nhận được danh hiệu cho tiểu bang khác nhau của nút tại bất kỳ thời điểm nào trong chương trình ... Nhưng dựa trên câu trả lời câu hỏi từ Zaphod là tốt.

Các vấn đề liên quan