上下文是我试图绘制一系列温度作为图表。这为什么不绘制路径?
在我的应用程序的工作方式如下(据我所知)的那一刻:
应用程序将打开,OPENFILE使用哪种初始化我的文档类这种读取修改后的CSV文件导入到一个NSString“fileContents”然后我分离成一个字符串数组,每个字符串都包含没有分隔符或空格的值。如下:
NSArray *temps = [fileContents componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"\n|\r"]];
之后我初始化我的自定义视图中,TemperatureGraph类,并立即将它传递成为在下面的代码看到的currentlog阵列。实例ID是当前的。
最后,我调用:
[current drawpath];
这是下面的实例方法:
- (void) drawpath
{
NSBezierPath *program = [NSBezierPath bezierPath];
NSPoint st = NSMakePoint(0, 0);
[program moveToPoint:st];
[program setLineWidth:10];
[program setLineCapStyle:NSRoundLineCapStyle];
[[NSColor blueColor] setStroke];
[program stroke];
NSUInteger a, b;
a = [currentlog count];
b = 0;
while (b <= a) {
NSPoint new;
float x;
x = 5 * b;
new = NSMakePoint(x, [[currentlog objectAtIndex:b] floatValue]);
[program lineToPoint:new];
[program stroke];
b += 6;
}
}
为什么不工作?定义不起作用:应用程序编译并运行,但我有一个空白窗口。
另外请指出在那里,但不影响代码的任何菜鸟错误,因为我仍然在这里的学习阶段。
谢谢!所以现在我的绘图工作除了数据不是从我的Document子类传递到我的自定义视图,直到它的init方法被调用之后。是否有另外一种方法我应该这样做?像initWithData这样的东西,但是对于View子类? – Priesto
没有理由在初始化之后不能传入它,这样可以选择稍后更改数据。如果更新数据,请调用'setNeedsDisplay:',视图将会用新数据重新绘制自己。 – jrturton
谢谢。我试过这个,但是现在我传递数据的方式有问题,但我想这是另一个问题。不要假设你可以告诉我为什么这不起作用:在NSDocument方法中: 'TemperatureGraph * current = [[TemperatureGraph alloc] init]; //查看类 NSUInteger a = [temps count]; // 35857 items [current setlog:temps]; ' 在TemperatureGraph中。m: ' - (void)setlog:(NSArray *)log { currentlog = log; [self setNeedsDisplay:YES]; }' 这会导致一个没有项目的数组? – Priesto