【问题标题】:How to pass data to a custom class(subview) drawRect function?如何将数据传递给自定义类(子视图)drawRect 函数?
【发布时间】:2012-08-07 17:39:10
【问题描述】:

编辑:

我正在使用drawRect: 函数绘制一条线,该函数驻留在我在 MainStoryboard.storyboard 文件中创建的视图中的自定义类中。视图确实指向界面构建器中的自定义类 (draw2D)。

我在主文件(viewController)中绘制的所有代码现在是: (头文件)

@class draw2D;  
@property (weak, nonatomic) IBOutlet draw2D *draw;  

(m 文件)

#import "draw2D.h"  
[draw.listOfFreqToDraw addObject: closestChar];   
[draw setNeedsDisplay];

我现在似乎遇到的问题是它只在 draw2D 类中运行一次 drawRect 方法,并且不再调用它(因此在第一次运行后甚至没有调用 listOfFreqToDraw)

【问题讨论】:

  • 您是否将“类”名称更新为您在 Interface Builder 中的自定义类?
  • 是的,我已经做到了。名为 draw2D 的自定义类链接到它。
  • 就像我提到的类画得很好,我遇到的问题是与绘图类共享数据信息。
  • 你能贴出你在哪里将数据传递到视图中的代码吗?
  • 我认为这是我做的非常错误的事情,我不知道如何做得更好。我将我发起的子类称为draw。然后我只是调用变量数组并用项目填充它。但后来我在视图上调用刷新 [draw.listOfFreqToDraw addObject:closestChar]; [self.noteLineView setNeedsDisplay];

标签: ios object-code


【解决方案1】:

您可以随时更改 draw2D 中的变量

在draw2D.h中设置

@property (nonatomic, strong) NSMutableArray * listOfFreqToDraw;

在draw2D.m中

- (void)drawRect:(CGRect)rect {
 for (UIBezierPath *path in self. listOfFreqToDraw) {
    [path stroke]; 
   }
}

在你的主课中

[draw.listOfFreqToDraw addObject: closestChar];
[draw setNeedsDisplay];

【讨论】:

  • 在 noteLineView.paths = self.paths;在对象 UIView 上找不到属性“路径”,您的意思是 draw2D 类吗?它似乎找不到 UIView 自定义类拥有的属性,如果我使用直接类,它似乎使用它的另一个实例。
  • 当你写 [draw.listOfFreqToDraw addObject:closestChar]; [self.noteLineView setNeedsDisplay] draw2D 类型的对象是什么?
  • 很抱歉混淆了draw2D和draw。绘制是:draw = [[draw2D alloc] init];而draw2D只是导入的自定义类
  • 如果我的 noteLineView(它只是一个 UIView)实际上可以指向自定义类的一个实例及其似乎没有执行的变量,我可以看到您编写的代码工作
  • 不明白noteLineView的意思。只需执行 [绘制 setNeedsDisplay];
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 2016-09-14
  • 1970-01-01
相关资源
最近更新 更多