无法访问其他类的@Property

问题描述:

我无法访问我的程序中的某些变量。无法访问其他类的@Property

我有一个叫MainMenu的类。

在我宣布2个性能如下.h文件:

MainMenu.h: 
@property (nonatomic, retain) IBOutlet NSView *mainView; 
@property (nonatomic, retain) IBOutlet NSWindow *theMainWindow; 

在另一类文件,我希望能够访问这些2个变量,目前我使用下面的代码中的其他不工作的.h类文件,我不明白我在做什么错:

AppDelegate.m: 
MainMenu *theMainMenu = [[MainMenu alloc] init]; 
[theMainMenu switchViews:theMainMenu.theMainWindow:theMainMenu.mainView]; 

在这里,我创建的MainMenu类的一个对象,并调用一个名为“switchViews”在其定义的方法,然后我想传递给我两个我无法访问的变量。

任何帮助非常感谢。 在此先感谢大家。

编辑:如下图所示 'switchViews' 的方法:

- (void)switchViews:(NSWindow*)mainWindow:(NSView*)newView { 
    NSView *dummyView; 
    [mainWindow setContentView:dummyView]; 
    [mainWindow setContentSize:newView.frame.size]; 
    [mainWindow setContentView:newView]; 
} 
+0

您用于调用switchViews的语法不正确。 switchViews如何声明? – UIAdam 2012-04-17 20:32:27

+0

我已将方法添加到我的帖子中 – Cristian 2012-04-17 20:33:28

+1

你是什么意思的“它不工作”?编译错误?运行时错误? – mprivat 2012-04-17 20:35:59

我认为这个问题是MainMenu类的两个不同实例之一。如果你连接了你的IBOutlets,你必须在你的MainMenu类中有一个蓝色立方体集,对吗?但是,当您在应用程序委托中分配init之后,会创建MainMenu的另一个实例,该实例不具有与任何内容相关的属性。相反,您还应该将IB中的蓝色立方体设置为您的应用程序委托,并在该类中有一个IBOutlet,用于连接IB中的MainMenu蓝色立方体。

这可能是愚蠢的,但你记得链接您的NSWindow和一个NSView在Interface Builder?或者你是否至少手动实例化它们?

我最好的猜测是(假设有一个MainMenu.xib的地方),当你调用init时,它的对象是inited但不一定是加载的。您应该尝试在您的控制器viewDidLoadviewWillAppear方法中调用您的switchViews方法,以确保它已全部加载。

+0

不愚蠢,所有帮助表示赞赏。一切正常链接 – Cristian 2012-04-17 20:42:28

+0

AppDelegate.m中的哪个地方是你从那里调用的方法? – mprivat 2012-04-17 20:43:45

+0

applicationDidFinishLaunching() – Cristian 2012-04-17 20:44:39