0

我无法访问程序中的某些变量。

我有一个名为 MainMenu 的课程。

在 .h 文件中,我声明了 2 个属性,如下所示:

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

在另一个类文件中,我希望能够访问这两个变量,目前我在另一个不起作用的 .h 类文件中使用以下代码,我不明白我做错了什么:

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

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

非常感谢任何帮助。提前谢谢大家。

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

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

2 回答 2

1

我认为问题是 MainMenu 类的 2 个不同实例之一。如果您连接了 IBOutlets,您必须在 IB 中将一个蓝色立方体设置为您的 MainMenu 类,对吗?但是,当您在应用程序委托中分配 init one 时,会创建另一个 MainMenu 实例,该实例没有将这些属性连接到任何东西。相反,您还应该在 IB 中将一个蓝色立方体设置为您的应用程序委托,并在该类中有一个 IBOutlet,您可以将其连接到 IB 中的 MainMenu 蓝色立方体。

于 2012-04-17T21:47:13.370 回答
0

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

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

于 2012-04-17T20:41:48.040 回答