Objective c 方法从不同的类中抽取两次
我在AppDelegate中创建了一个窗口,然后在使用newContentView执行任何操作(例如从CutoutView获取方法)时,我将内容视图设置为NSView子类“CutoutView”,这些操作非常有效Objective c 方法从不同的类中抽取两次,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我在AppDelegate中创建了一个窗口,然后在使用newContentView执行任何操作(例如从CutoutView获取方法)时,我将内容视图设置为NSView子类“CutoutView”,这些操作非常有效 // Configure contentView in AppDelegate newContentView = [[CutoutView alloc]initWithFrame:window.frame]; [window setContentView:newCont
// Configure contentView in AppDelegate
newContentView = [[CutoutView alloc]initWithFrame:window.frame];
[window setContentView:newContentView];
现在我有了另一个名为MoveFilter的NSView子类,我希望能够从CutoutView中调用方法。问题是为了做到这一点,我必须再次alloc和init CutoutView方法,当我这样做时,可以调用这些方法,但什么都不显示,因为CutoutView之前已经alloc和init了
// in MoveFilter
cutOutView = [[CutoutView alloc]init];
[cutOutView someMethod];
我需要向MoveFilter添加什么,或者我可以看些什么来帮助我调用方法,这些方法将像newContentView一样显示在哪里?对不起,我是新手,谢谢 从应用程序代理获取现有的
剪切视图
:
CutoutView * cv = [[NSApp delegate] newContentView];
(假设您对此有一个属性——看起来您正在将其放入ivar中。)
或者从窗口:
// in MoveFilter
CutoutView * cv = [[self window] contentView];
(假设MoveFilter
和CutoutView
位于同一窗口中。)
或者,如果这两个假设都不成立,您可以将这两个过程结合起来,获得应用程序代理窗口的内容视图。我将把它留给您作为练习。我为newContentView创建了一个属性,并使用了您的第一个示例
CutoutView*cv=[[NSApp delegate]newContentView]代码>它们在不同的窗口中,因此在下一行中,我尝试获取内容视图,如socv=[[self window]contentView]代码>但我遇到了一个错误,我接近了吗?[[[[NSApp delegate]window]contentView]
是这样的吗<代码>CutoutView*cv=[[NSApp委托]newContentview]代码>和cv=[[NSApp委托]窗口]内容视图]代码>它没有给出错误,但我无法调用方法[cv someMethod]
感谢您的耐心这些方法在建议中得到认可,但当我[cv someMethod]
时,什么都没有发生