2017-02-26 4 views
-1

NSView class documentation에는 드로잉 명령으로 결과를 생성할지 여부를 나타내는 기호 canDraw이 있습니다. 그래서 언제 당신은 당신이 "Cannot assign to property: 'canDraw' is a get-only property을합니다"라는 메시지 빌드 타임 오류가 발생,NSView 인스턴스 속성을 설정하는 방법

@IBOutlet weak var myView: NSView! 

다음 myView.canDraw = true 같은 것을 시도 -

선언은 var canDraw: Bool { get }입니다. 그러나 NSRect를 내보기에 그려야 할 경우 어떻게이 속성을 변경할 수 있습니까?

+0

변경하지 마십시오. 문서 읽기! 이 순간 컨텍스트가 있는지 여부를 알려줍니다. 드로잉을 담당하고 싶다면'draw' 메소드 만 구현하면된다. https://developer.apple.com/reference/appkit/nsview/1483686-draw – matt

+0

@matt'draw' 메쏘드를 구현해 보았는데 아무런 변화가 없었습니다. 그래서 나는' canDraw'는 거짓이었다. 내 잘못이야. 나는 '드로 (draw)'라고 계속 생각할 것이다. –

+0

OK, 그래서 당신은 스스로에게 물어볼 필요가 있습니다. _why_'canDraw'는 false입니다. 문서는 "뷰 객체는 숨겨져 있지 않은 경우 화면 상에 그릴 수 있고, 창 (NSWindow)의 뷰 계층 구조에 첨부되며 해당 창 장치가 있습니다." 내 생각 엔 당신의 뷰 객체가 이러한 기준을 충족시키지 못한다는 것입니다. – matt

답변

2

canDraw은 읽기 전용이므로 변경할 수 없습니다. 읽기 전용은 사실상 문제를보고하기 때문에 제어 할 수 없습니다. 즉, 현재 볼 수있는 뷰인지 여부입니다.

도면 자체를 처리하는 NSView를 구현하기 위해 NSView를 하위 클래스로 구현하고 draw을 구현하는 뷰를 작성합니다. 예 : 그 스크린 샷에 표시된

enter image description here

코드는 기본적으로 응용 프로그램의 유일한 코드입니다. 윈도우의 뷰는 MyView이고, MyView는 draw을 구현합니다.