上下文是我試圖繪製一系列溫度作爲圖表。這爲什麼不繪製路徑?
在我的應用程序的工作方式如下(據我所知)的那一刻:
應用程序將打開,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