2014-03-27 2 views
0

예를 들어 10 개의 버튼이 있습니다. 10 개의 버튼 모두 동일하지만 다른 변수 (버튼 유형 1 개, 문자열 유형 1 개 등)를 사용해야합니다.배열 매개 변수가있는 다중 버튼 동일 이벤트

단추 이벤트에서 단일 차원 배열을 매개 변수로 보낼 수 있습니까? 이 코드 10 개 가지 방법과 eacht의 기타에서 10 배를

[btn_gv_tl1 addTarget:self action:@selector(click_gv_tl1) forControlEvents:(UIControlEvents)UIControlEventTouchDown]; 

:

은이 코드를 사용합니다. 매개 변수 배열을 사용하여 같은 메서드를 호출하고 싶습니다.

이 가능합니까? 감사합니다.

+0

스토리 보드를 사용합니까? 스토리 보드에서는 모든 단추에서 단일 IBAction을 수행하고 보낸 사람 (UIButton)을 특성으로 전달할 수 있습니다. –

답변

0

여기 인화 "어떤 버튼이 눌러 진"제 메소드를 호출하고 상기 제 메소드를 호출 유일한 차이점은 @selector에서 콜론 션

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIButton *btn_gv_tl1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btn_gv_tl1.frame = CGRectMake(10, 10, 100, 43); 
    [btn_gv_tl1 setTitle:@"tl1" forState:UIControlStateNormal]; 
    [btn_gv_tl1 addTarget:self action:@selector(click_gv_tl1:) forControlEvents:UIControlEventTouchDown]; 
    [self.view addSubview:btn_gv_tl1]; 
} 

- (void)click_gv_tl1 
{ 
    NSLog(@"some button was pressed"); 
} 

- (void)click_gv_tl1:(UIButton *)sender 
{ 
    NSLog(@"%@", sender.titleLabel.text); 
} 

위한 작은 코드이다. 즉, 첫 번째 메서드를 호출하려면 @selector(click_gv_tl1)을 사용하고 두 번째 메서드를 호출하려면 @selector(click_gv_tl1:)을 사용합니다.

두 번째 방법에서 인수는 누른 단추의 단추 개체입니다. 단추 제목을 확인하여 눌려진 단추를 확인하거나 각 단추에 tag을 입력하고 sender.tag을 기반으로 어떤 단추를 눌렀는지 확인할 수 있습니다.

+0

감사합니다. 유일한 문제는 setTitle입니다. 상태를 설정하기 위해 그것을 사용하고 싶습니다. 다음 코드를 사용합니다. [배열] setTitle : @ "on"forState : UIControlStateNormal]; NSString * x = [[arrayButton titleLabel] text]; 하지만 디버깅 할 경우 x는 "on"대신 "Button"값을가집니다. – DMK

+0

이상합니다. 문제를 재현하기 위해 버튼을 비활성화하는 것과 같은 몇 가지 시도를했지만 성공하지 못했습니다. 나는 항상 "on"의 가치를 가지고있다. 두 번째 줄 뒤에'NSLog (@ "% @", x);를 시도 했습니까? 어쩌면 그것은 단지 디버거 일 것입니다. – user3386109

+0

출력보다 2014-03-28 14 : 13 : 18.413 HoCo [850 : 60b] 버튼 – DMK

관련 문제