您好stackoverflow人们,
我对可可很陌生。我有XCode 3.1

情况:
我有一个NSObject子类:(AppController)具有链接到按钮的操作。
比起我有一个自定义视图,它连接到我的NSView子类(AppView),在drawRect命令中我绘制了一个矩形(所有这些东西都起作用),
我在AppView.m中具有一个函数-(void)drawIt {..},该函数绘制矩形。
现在我用[self drawIt]在-(void)drawRect ...中调用它。那也行。

我现在要做的是单击按钮时调用drawIt。 (在AppController.m中,由于单击按钮而调用Action-(IBAction)...时)

我希望你能帮助我,
我是stackoverflow的新手,所以我不知道我是否应该在这里粘贴所有代码,但可以,但是这样更容易阅读

最佳答案

您应该阅读Cocoa Drawing Guide概念性材料。系统认为有必要时,系统会要求您对视图执行-drawRect:。在这方面,可以随时要求您提出自己的看法。因此,您必须考虑“绘制当前状态”。

您可能应该做的(在这种基本情况下)可能是给自定义视图一个布尔属性“ drawIt”,然后让您的按钮动作在视图实例上切换它。这样,您可以调用if (self.drawIt == YES)矩形绘图代码。

调用-drawRect:时,您应该总是做一些事情来“清除”视图(例如用白色填充整个边界),然后仅在满足条件时才绘制条件填充。

例:

- (void)drawRect:(NSRect)aRect
{
  // Clean up background (we ignore "aRect", drawing entire view at once)
  [[NSColor whiteColor] set];
  NSRectFill([self bounds]);

  // Do we want to draw our magic rect?
  if ([self drawMagicRect])
  {
    [[NSColor redColor] set];
    NSRectFill([self magicRect]);
  }
}

09-28 01:02