2009-09-07 8 views
1

어떻게 NSButton 텍스트 값을 가져야합니까? 예 : 텍스트와 함께 2 개의 버튼을 사용하고 취소하면 어떤 버튼이 클릭되었는지 확인한 다음 NSRunAlertPanel (...) 버튼을 클릭하여 메시지를 표시하고 싶습니다. 어떤 버튼을 클릭 했습니까? 단추를 클릭 할 때 코드를 써야합니다.NSButton의 텍스트 값을 가져 오는 방법은 무엇입니까?

답변

1

조치 방법에서 인수는 대개 'sender'로 지정되며 단추입니다. 따라서 다음과 같이 할 수 있습니다.

- (IBAction)buttonClicked:(id)sender 
{ 
    if ([[sender title] isEqualToString:@"Click"]) { 
     NSLog(@"Click clicked."); 
    } else if ([[sender title] isEqualToString:@"Cancel"]) { 
     NSLog(@"Cancel clicked."); 
    } 
} 

제목을 다른 지역화로 변경할 수 있으므로 버튼을 확인하는 데 제목을 사용하지 않는 것이 좋습니다. tag을 대신 지정할 수 있습니다. 이는 단순히 int이며 다른 보낸 사람을 식별하는 데 사용할 수 있습니다.

+0

덕분에, 그것은 나를 도왔다. 나는 태그와 함께 그것을 검사하려고 노력할 것이다. – maddy

1

일반적으로 구현되는 방식은 각 버튼이 다른 동작을 호출하므로 버튼의 텍스트를 확인할 필요가 없습니다. The Target-Action Mechanism을 참조하십시오.

일반적으로 사용자가 볼 수있는 텍스트를 사용하여 프로그램 논리를 제어하면 현지화가 어려워 지므로 거의 항상 나쁜 생각입니다.

상황을 자세히 설명하고 싶을 수도 있습니다. Interface Builder를 사용하여 인터페이스를 만드십니까? 이 버튼들은 모달 대화 상자 또는 문서 창에 있습니까?

+0

좋아요, 당신의 요지를 이해합니다. 나는 모달 대화 상자로 인터페이스 빌더를 사용하여 그렇게 할 수 있는지 알아보기 위해 노력했다. 포인터 주셔서 감사합니다. :) – maddy

1

인터페이스 빌더의 속성 창에서 클래스 정보 탭에 단추 이름을 지정한 다음 응용 프로그램 대리인의 IBOutlet으로 선언 할 수 있습니다.

AppDelegate.h :

IBOutlet NSButton *ClickButton; 
IBOutlet NSButton *CancelButton; 

그런 다음 인터페이스 빌더에서 콘센트를 연결하고 당신의 방법에 발신자 인 버튼 확인 :

- (IBAction)buttonClicked:(id)sender 
{ 
    if (sender == ClickButton) { 
     NSLog(@"Click clicked."); 
    } 
    else { 
     NSLog(@"Cancel clicked."); 
    } 
} 
관련 문제