Cocoa / Objective-C:在Button上绘制矩形单击

时间:2010-01-18 17:21:29

标签: cocoa button drawing action

Hellow stackoverflow人, 我对Cocoa很新。我有XCode 3.1

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

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

我希望你能帮助我, 我是stackoverflow的新手,所以我不知道我应该通过这里的所有代码,我可以,但也许它更容易阅读像这样

1 个答案:

答案 0 :(得分:6)

您应该阅读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]);
  }
}