setNeedsDisplay:YES不绘制

时间:2014-07-21 15:26:24

标签: objective-c xcode nsview custom-view setneedsdisplay

所以我在现有窗口中绘制自定义视图时遇到问题。我有一个名为GraphView的自定义类,用于在视图上绘制值图。图表每秒传递一次变量,并应通过setNeedsDisplay:YES重新绘制。我可以让这个类在一个独立的xCode项目中工作,但为了使它能够工作,我必须控制 - 从Interface Builder中的自定义视图拖动到File's Owner,视图将重绘。所有绘图代码在独立的xCode项目中都能正常工作,因此我知道我的drawRect方法,并且所有其他视图方法都按照我打算的方式工作。如果我做同样的事情,我也可以让这个GraphView在我当前的项目中工作,但applicationDidFinishLaunching将无法运行。

以下是示例项目中代码的细分。

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // This code does not run when I drag the custom view's referencing outlet to    File's Owner in IB
    self.graph = [[GraphView alloc]init];
}

- (void)applicationWillTerminate:(NSNotification *)aNotification {
    // Insert code here to tear down your application
}

-(IBAction)firstPoint:(id)sender{
    [self.graph addNewPoint:[self.textValue floatValue]];

    [self.graph setNeedsDisplay:YES];


}

@end

我缺少的部分是什么,以至于我不必在我的GraphViewFile's Owner的InterfaceBuilder中建立连接,以便使用{更新视图{1}}。任何帮助或指示将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您的GraphView由Interface Builder加载,则无需在代码中分配它。请务必在IB中注明好的班级名称。

另外,如果你真的想在代码中分配init你的GraphView并且不使用IB,不要忘记在你的窗口中添加子视图: