2012-06-26 2 views
0

특정 컨트롤러 클래스의 경우 그리드를 그려야합니다 (그리드는 매일 변경되며 일별 스케줄은 매일 변경됩니다). 나중에 사용자가 조치를 취할 때 원래 그리드를 수행 할 때 가지고 있지 않은 업데이트 된 일정 데이터로 그리드를 채워야합니다.다른 시간에 drawRect 내에서 그래픽 객체를 그리는 방법은 무엇입니까?

내 질문은 : 내가 선택한 날을 viewDidLoad가 알지 못하기 때문에 새로운 일일 일정 데이터와 함께 다시 전체 그리드를 다시 그려야한다는 뜻인가요? (그게 내가 drawRect에 그려진 모든 것을 얻으려고 생각할 수있는 유일한 방법이다) 아니면 일일 일정을 그리기 위해 drawRect의 바깥에있는 메서드를 호출 할 수 있는가? 아니면이 일을하는 또 다른 방법이 있습니까?

+0

일반적으로 그리드를 에뮬레이션하기 위해 사용자 지정된 TableViewCell과 함께 tableview를 사용합니다. 그리드를 그리는 것보다 훨씬 덜 복잡하다는 것을 알았습니다. –

+0

또한 [label setNeedsDisplay]를 설정하여 수정 된 레이블의 다시 그리기를 트리거하는지 확인할 수 있습니다. –

답변

2

당신이 이것을 가정 할 수있는 가정에 영향을 줄 수있는 iOS 또는 Mac인지 여부는 지정하지 않습니다. 그러나 일반적으로 뷰의 drawRect 메서드는 제공된 사각형 내 모든 것을 다시 그려야합니다 (단서는 메서드 이름에 있음). 그리고 광범위하게 말해서, 그러한 드로잉을 관리 할 수있는 곳입니다. 물론 코드를 명확하고 체계화하기 위해 다른 방법으로 분해 할 수는 있습니다.

눈금이 엄밀하지 않으면 그리기가 성능에 눈에 띄는 영향을 미치지 않습니다. 실제로 더러운 지역에서 필요한 내용을 다시 그리지 못하는 것은 훨씬 더 나쁜 상황입니다.

+0

"코드를 다른 메서드로 분해"함으로써 drawRect 내에서 일정 그리드와 다른 시간에 그리드에 그려야하는 다양한 데이터를 그리는 다른 메서드를 호출 할 수 있다는 것을 의미합니까? (희망이 맞는 희망) – SpokaneDude

+1

물론 모든 코드 일뿐입니다. 알아 두어야 할 유일한 점은 그래픽 콘텍스트가 올바르게 설정되었다는 것인데, drawRect 내에서 직접 호출하면된다. 다른 곳에서 동일한 방법을 호출하는 것에 조심하십시오. – walkytalky

+0

환상적! 정확히 내가 찾고 있던 것이 ... 작동합니다! : D 대단히 감사합니다 ... – SpokaneDude

0

일정 데이터의 그리기 코드에서 그리드의 그리기 코드를 분리하려는 것처럼 들리 네요.

가장 쉬운 방법은 일정 데이터에 대한 NSView의 하위 클래스를 만드는 것입니다. 그런 다음 각 데이터에 대해 해당 개체의 인스턴스를 만들 수 있습니다. 그리드 뷰는 프레임을 설정하여 해당 일정 데이터 객체의 위치를 ​​지정할 수 있으며 일정 데이터 객체는 자신의 drawRect : 메소드에서 직접 그릴 수 있습니다.

관련 문제