0

我在我的 AppDelegate 中有一个我创建的窗口,然后当我使用 newContentView 执行任何操作(例如从 CutoutView 获取方法)时,我将内容视图设置为 NSView 子类“CutoutView”,它们工作得很好。

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

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

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

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

4

1 回答 1

2

CutoutView从应用委托中获取现有的:

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

(假设你有一个属性——看起来你正在把它放到一个 ivar 中。)

或从窗口:

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

(假设MoveFilterCutoutView位于同一个窗口中。)

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

于 2012-04-14T18:09:48.900 回答