2012-12-31 5 views
-1
나는 버튼이 내 아이폰 앱

데이터 전달

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[rightButton addTarget:self 
       action:@selector(go_to_detail_page:)  
     forControlEvents:UIControlEventTouchUpInside]; 
annView.rightCalloutAccessoryView = rightButton; 

에서지도보기 페이지에 대한 주석 마커에 추가 한 내 수신 기능이

-(IBAction)go_to_detail_page:(id)sender;{ 
} 

입니다

내 질문은 다음과 같습니다. 내 페이지에 많은 표식을 만들고 있는데, 특정 주석보기 단추를 누르면 고유 한 식별자를 전달하고 싶습니다. 심지어 문자열이 좋을 수도 있습니다. 특수 효과를 누른 후 문자열을 go_to_detail_page 메서드에 전달할 수 있습니까?

+0

신원을 확인하기 위해 "발신인"을 사용하지 않는 이유는 무엇입니까? 버튼은 액션 선택기의 인수로 전달됩니다. –

+0

죄송합니다. 어떻게해야합니까? 감사합니다 – user1096447

+1

@ user1096447 : 좋은 명명 규칙을 사용하십시오 ... 메소드 이름에 대해 camelCase. –

답변

1

사용 rightButton.tag = 1

-(IBAction)go_to_detail_page:(id)sender{ 
    UIButton *button = (UIButton *)sender; 
    if(button.tag==1){//this is the rightButton 
     //your logic goes here 

    } 
} 
0

에 이봐 당신은 하위 클래스있는 UIButton 및 *는 NSString을 넣어 회원

+0

하하 ...이것은 금성에 가서 거기에서 일산화탄소를 빌려 오는 것과 같습니다 ... –

+0

오, 그래서 CO를 생산하는 가장 좋은 방법은 무엇입니까? 저도 공부하겠습니다 .Vaidyarae –

+1

UIButton에는 태그라는 것이 포함되어 있습니다. 하위 클래스를 추가하거나 다른 ivar를 추가 할 필요없이 사용할 수 있습니다. –

0

당신은 버튼으로 고유 ID를 설정할 수 있습니다 .. 각 버튼 인스턴스를 태그 할 수 있습니다 tag

UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[rightButton addTarget:self 
       action:@selector(go_to_detail_page:)  
     forControlEvents:UIControlEventTouchUpInside]; 
annView.rightCalloutAccessoryView = rightButton; 
rightButton.tag == any unique number // it would act as unique identifier 

다음과 같이 검색하십시오.

- (IBAction)go_to_detail_page:(id)sender;{ 

    UIButton *button = (UIButton *)sender; 
    if(button.tag==unique identifier){ 
     // this is the rightButton 
     // your logic 
    } 
    else 
    { 

    } 
} 
0

2 가지 옵션이 있습니다.

첫 번째 옵션은 각 버튼에 tag을 할당 한 다음 해당 동작에서 검색하는 것입니다. 예를 들어 각 버튼마다 다른 태그를 지정합니다.

rightButton.tag = // a tag of integer type 

다음이

- (void)goToDetailedPage:(id)sender 
{ 
    UIButton *senderButton = (UIButton *)sender; 

    int row = senderButton.tag;   
    // do what you want with the tag 
} 

다른 옵션처럼 사용이 연관 참조를 사용하고 있습니다. 이들을 통해 서브 클래스를 UIButton으로 지정하지 않고 속성 (유형 : NSString)을 만들고이를 식별자로 사용할 수 있습니다.

여기를 사용하려면 Subclass UIButton to add a property을 살펴보십시오.

꽤 복잡한 개념이지만이를 통해 유연성이 뛰어납니다.

노트

당신은 IBAction를 사용할 필요가 없습니다. 대신 무효화하십시오. IBAction 또는 IBOutlet은 IB (Interface Builder)와 함께 사용하기위한 것입니다. 그들은 그냥 자리 표시 자입니다. 후드 아래에서 그들은 무효를 의미합니다.

낙타의 경우 표기법을 사용하십시오. 예를 들어, 내 대답에 쓴 것처럼 go_to_detail_page 대신 goToDetailedPage을 사용하십시오.