来自不同类的方法两次
问题描述:
我在我的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呢?对不起,我是新手,谢谢!
答
获取现有的从应用程序的委托CutoutView
:(假设你有这样的属性 - 它看起来像你把它变成伊娃)
CutoutView * cv = [[NSApp delegate] newContentView];
或窗口:
// in MoveFilter
CutoutView * cv = [[self window] contentView];
(假设MoveFilter
和CutoutView
是在同一窗口)
或者,如果这两个假设都不正确,则可以合并这两个过程并获取应用程序委托的窗口的内容视图。我会把它作为你的练习。
我为newContentView创建了一个属性,我用你的第一个例子'CutoutView * cv = [[NSApp delegate] newContentView];'它们在单独的窗口中,所以在我的下一行中,我尝试着像'cv = [[self window] contentView];'但是我得到一个错误,我关闭了吗? – 2012-04-14 18:21:59
'[[[NSApp委托]窗口] contentView]' – 2012-04-14 18:46:34
所以这样? 'CutoutView * cv = [[NSApp delegate] newContentview];''''和'cv = [[[NSApp委托]窗口] contentView];'它错误地给出错误,但我无法调用某个方法'[cv someMethod]'谢谢为了保持耐心 – 2012-04-14 18:55:55