2009-07-30 5 views
0

코코아에서 응용 프로그램을 개발 중입니다. 이제 나는 중대한 문제에 직면하고 있습니다. NSView에서 컨트롤 NSButton을 숨길 수 없습니다. 다음 코드를 사용했습니다.NSView에서 컨트롤을 숨길 수 없습니다.

[btn setHidden:YES] 

이 "btn"컨트롤은 숨겨지지 않습니다. 다음 코드를 사용하여 버튼이 숨겨져 있는지 확인했습니다.

[btn isHidden] 

그러나이 예가 반환됩니다. 또한이보기를 표시하는 동안 NSTextfield 값을 보낼 수 없습니다.

미리 감사드립니다.

답변

1

버튼을 숨기고 후 한 번 runloop를 실행 해주십시오

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 
+0

감사합니다. NSProgressIndicator에서 1 초 대신 숨기기를 거부 한 0.02를 사용 했으므로 해결되었습니다. 왜 displayIfNeeded, setNeedsDisplay 등이 그것을 강요하지 않았는지 전혀 알 수 없습니다. 그것은 일반적으로 내 애플 리케이션이 다른 곳에서 숨 깁니다. – GeoffCoope

+1

'[NSDate distantPast]'를 사용하여 runloop을 한 번만 실행할 수도 있습니다. – diederikh

1

을이 버튼이 숨겨진 만들 수없는 이유는 알고 어려운 응용 프로그램에서 벌어지고있는 그 밖의 무엇을 모른 채.

메인 이벤트 루프를 차단하여 업데이트 이벤트가 처리되지 않습니까? 일반적으로 이것은 좋은 일이 아닙니다.

즉시 업데이트하도록 강제 할 수있는 방법 중 하나는 단추 나 부모보기 나 창에서 displayIfNeeded를 호출하는 것입니다. 이렇게하면보기가 다시 그려야합니다. 이것은 버튼이 올바른 상태를 끌어 올 (또는 그릴 수 없음)지를 확인하는 실험으로 적합합니다. displayIfNeeded를 호출하면 사라집니다. 그러면 업데이트 이벤트가 올바르게 처리되지 않는 이유를 확인해야합니다.

관련 문제