2009-12-25 2 views
2

저는 바인딩을 망치기 시작했습니다. 기본 대화 상자를 구현하기 시작했습니다. 일부 기본 NSColorWell을 공유 기본값 컨트롤러에 바인딩합니다. 그것은 완벽하게 작동합니다. 내 값이 올바르게 인코딩되고 저장됩니다.코코아 바인딩을 사용할 때 환경 설정 저장을 취소하는 방법은 무엇입니까?

그러나 작동하지 않는 것은 대화 상자에서 취소하는 것입니다. 취소하면 값이 저장됩니다.

취소 버튼을 NSUserDefaultController의 "되돌리기"에 바인딩해야하는 것처럼 보입니다. 물론 그렇게하면 "performClose"에 바인딩 할 수 없습니다 (버튼을 바인딩하는 방법이 없으면). 내가 알지 못하는 여러 가지 행동).

취소 버튼을 바인딩하면 변경 사항을 되돌리고 창을 닫을 수 있습니다. 분명히 나는 ​​둘 다하는 행동 방법을 작성함으로써 그것을 할 수 있지만, 그것은 단지 IB에서 가능해야만하는 것처럼 보입니다.

답변

5

두 가지 :

변경이 이루어질 때 첫째, 규칙에 따라, 맥 OS X에 대한 기본 설정은 즉시 적용됩니다. 환경 설정 변경에는 "취소"또는 "적용"이 없습니다 (Windows에서와 같이). 환경 설정을 재설정하는 "기본값"버튼을 사용하는 것은 드문 일이 아니지만 변경 사항이 즉시 적용되므로 취소하지 마십시오. 그렇지 않으면 앱 규칙을 따르지 않으므로 앱의 기본 설정을 약간 이상하게 만든다.

둘째, 바인딩을 통해이 값을 직접 변경하기 때문에 (대상/작업 메커니즘을 사용한 경우와 동일), 변경 사항을 취소 할 수있는 기회를 놓치지 않습니다. 가장 좋은 방법은 콘텐츠가 앱 환경 설정의 사본 인 사전 컨트롤러를 만드는 것입니다. 해당 사전에서 편집이 수행됩니다. 사용자가 취소하면 사전을 버리기 만하면됩니다. 사용자가 변경 사항을 수락하면 사전의 설정을 실제 앱 환경 설정으로 복사 한 다음 삭제합니다. 앱 설정을 "버퍼링"해야하는 경우 UI를 기본 설정에 연결하는 데 Bindings를 사용하는 동안 좋은 방법이지만 사용자가 수락 할 때 변경 사항을 적용해야합니다.

+2

첫 번째 단락은 _very_ good입니다. –

+1

두 번째 단락은 * 매우 * 훌륭합니다. – Andrew

관련 문제