For a particular controller class, I need to draw a grid (the grid refers to a daily schedule, which changes each day, sometimes each hour.). Some time later, upon an action by
You don't specify whether this is iOS or Mac, which might very marginally affect what assumptions you are able to make about this. But in general a view's drawRect
method should at least redraw everything within the supplied rectangle (the clue is in the method name). And, broadly speaking, that is the place to manage such drawing, though of course you can break the code up into other methods for clarity and organisation.
Unless your grid is incredibly dense, it is unlikely that this redraw will have noticeable impact on performance. Failing to redraw needed content in actually dirty regions would be a much worse situation.
It sounds to me like you'll want to separate out the drawing code for the grid from the drawing code for the schedule data.
The easiest way to do this is to create a subclass of NSView for your schedule data- then you can create an instance of that object for each piece of data. Your grid view can position those schedule data objects by setting their frame and the schedule data objects can draw themselves in their own drawRect: method.