0

对于一个特定的控制器类,我需要绘制一个网格(网格指的是每天的时间表,它每天都在变化,有时每小时都在变化。)。一段时间后,根据用户的操作,我需要用更新的计划数据填充该网格,而我在执行原始网格时没有这些数据。

我的问题是:由于我不知道 viewDidLoad 时选择的日期,这是否意味着我必须再次重新绘制整个网格以及新的每日计划数据?(这是我能想到的在drawRect中绘制所有内容的唯一方法)或者我可以调用drawRect之外的方法来绘制每日时间表吗?还是有另一种更好的方法来做到这一点?

4

2 回答 2

2

您没有指定这是 iOS 还是 Mac,这可能会非常轻微地影响您对此做出的假设。但总的来说,视图的drawRect方法至少应该重绘提供的矩形内的所有内容(线索在方法名称中)。而且,从广义上讲,这是管理此类绘图的地方,当然您可以将代码分解为其他方法以保持清晰和组织。

除非您的网格非常密集,否则此重绘不太可能对性能产生明显影响。未能在实际脏区重绘所需内容将是更糟糕的情况。

于 2012-06-26T22:02:51.327 回答
0

在我看来,您需要将网格的绘图代码与计划数据的绘图代码分开。

最简单的方法是为您的日程安排数据创建一个 NSView 的子类——然后您可以为每条数据创建该对象的一个​​实例。您的网格视图可以通过设置它们的框架来定位这些调度数据对象,并且调度数据对象可以在它们自己的 drawRect: 方法中绘制它们自己。

于 2012-06-26T22:02:24.760 回答