2012-06-28 6 views
0

NSWattow에 NSMattrix를 넣습니다. 이 NSMattrix에는 2 개의 라디오 버튼이 있습니다.NSMattrix IBAction 선택한 라디오 받기

3 개의 IBOutlets : - NSMattrix의 경우 하나 - 각 라디오 버튼 (NSButtonCell)에 하나.

1 IBAction 메서드를 선언했습니다.이 동일한 메서드를 NSMattrix의 각 라디오 단추 ant에 연결했습니다. 이 메소드는 state 라디오 버튼을 변경할 때 자동으로 호출됩니다. 큰. 그러나이 메서드에서 각 라디오 단추의 상태를 알고 싶을 때 상태가 좋지 않습니다.

이벤트 메서드에서 각 라디오 단추의 상태를 가져 오려면 어떻게해야합니까?

감사

답변

1

당신이 당신의보기 컨트롤러이 매장을 소유 한대로 IBOutlets를 통해 연결된 모든, 당신은 단순히 한 (당신이 원하는 때마다 자신의 상태에 대한 두 개의 버튼을 조회 할 수 있습니다, 또는 그 출구가 노출 될 경우 "@property"접근자를 통해).

가정 "buttonOne"와 "buttonTwo"있다 "IBOutlet"UIButtons, 당신은 간단하게 수행 할 수 있습니다

- (IBAction) buttonAction: (id) sender 
{ 
    BOOL buttonOneIsOn = ([buttonOne state] == NSOnState); 
    BOOL buttonTwoIsOn = ([buttonTwo state] == NSOnState); 
} 

"NSCell는"("NSButtonCell는"하위에있는) a very handy "state" method 있습니다. 내가 당신을 위해 설명서를 연결했습니다.

+0

답변 해 주셔서 감사합니다. 이것이 내가 한 일이다. 그러나 부울은 업데이트되지 않습니다. 나는 라디오 버튼의 "오래된"상태를 얻는다 – testpresta

0

이와 같은 경우에는 Cocoa Bindings를 사용하는 것이 좋습니다. 이것은 실제로 바인딩을 사용하는 간단한 방법 중 하나입니다.

바인딩을 사용하면 사용자 인터페이스 동기화가 처리됩니다. 이는 라디오 버튼의 상태를 쿼리 할 필요가 없다는 것을 의미합니다. 단추가 바인딩 된 속성을 쿼리하면됩니다.

조치 방법을 구현하는 대신 속성 만 있으면됩니다. 예를 들어, - (BOOL) radio1;, - (void) setRadio1:(BOOL) flag;, - (BOOL) radio2;- (void) setRadio2:(BOOL) flag; (그러나 그 방법보다 나은 이름을 제공합니다). Objective-C 이후 버전에서는 @property을 사용할 수 있습니다. 각 클래스에 대해 BOOL 필드를 입력하십시오.

NIB/XIB 파일을 편집 할 때 라디오 버튼에 속성을 할당 할 수 있습니다.

키 - 값 코딩의 규칙에 따라 self.radio1은 암시 적으로 radio1setRadio1 메서드가 모두 호출된다는 것을 의미하는 경로입니다. 다른 이름으로 바꾼 경우 그에 따라 경로 이름을 조정하십시오. 당신의 NIB/XIB을 편집 할 때

차례로 당신을 NSMatrix의 각 버튼 셀을 선택하고 바인딩 적절한 설정 :

  • 설정 "파일의 소유자"에 바인딩 값 (속성이 구현되는 곳이 있다면) .
  • 위의 예제 메서드가있는 경우 해당 속성의 키 경로 (self.radio1 또는 self.radio2)를 사용하십시오.

NSMatrix는 한 번에 하나의 값만 허용하도록 이미 설정되어 있으므로 속성 값도 마찬가지로 제한됩니다.

+0

미안하지만 그것은 바인딩과 함께 작동하지 않는다. "Value"섹션에 바인딩해야합니까? – testpresta

+0

예, 값 섹션에 있습니다. –

관련 문제