我无法访问程序中的某些变量。
我有一个名为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];
}
答案 0 :(得分:1)
我认为问题是MainMenu类的两个不同实例之一。如果你连接了你的IBOutlets,你必须在你的MainMenu类中设置一个蓝色立方体,对吗?但是,当您在应用程序委托中分配init 1时,会创建另一个MainMenu实例,该实例没有连接到任何内容的那些属性。相反,你应该在IB中设置一个蓝色立方体给你的app委托,并在那个类中有一个IBOutlet连接到IB中的MainMenu蓝色立方体。
答案 1 :(得分:0)
这可能很愚蠢,但你还记得在Interface Builder中链接你的NSWindow和NSView吗?或者你至少手动实例化它们?
我最好的猜测是(假设某处有一个MainMenu.xib),当你调用init
时,它的对象被引入但不一定被加载。您应该尝试在控制器viewDidLoad
或viewWillAppear
方法中调用switchViews方法,以确保它已全部加载。