来自不同班级的方法两次

时间:2012-04-14 18:03:12

标签: objective-c xcode cocoa

我在AppDelegate中创建了一个窗口,然后在使用newContentView执行任何操作时将内容视图设置为NSView子类“CutoutView”,例如从CutoutView获取方法效果很好。

// Configure contentView in AppDelegate
    newContentView = [[CutoutView alloc]initWithFrame:window.frame];
    [window setContentView:newContentView];

现在我有另一个名为MoveFilter的NSView子类,我希望能够从我的CutoutView调用方法。问题是为了做到这一点,我必须再次分配和初始化CutoutView方法,当我这样做时,可以调用方法但是没有显示,因为CutoutView之前已经是alloc和init。

 // in MoveFilter
 cutOutView = [[CutoutView alloc]init];
 [cutOutView someMethod];

我需要添加什么来移动MoveFilter或者我能看到什么来帮助我调用它们将像newContentView一样显示的方法?对不起,我是新来的,谢谢!

1 个答案:

答案 0 :(得分:2)

从应用代理中获取现有的CutoutView

CutoutView * cv = [[NSApp delegate] newContentView];

(假设你有一个属性 - 看起来你把它放入ivar。)

或从窗口开始:

// in MoveFilter
CutoutView * cv = [[self window] contentView];

(假设MoveFilterCutoutView在同一窗口中。)

或者,如果这些假设都不成立,您可以组合这两个过程并获取应用程序委托窗口的内容视图。我会把它作为锻炼给你。