2012-04-17 102 views
0

我無法訪問我的程序中的某些變量。無法訪問其他類的@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

回答

1

我認爲這個問題是MainMenu類的兩個不同實例之一。如果你連接了你的IBOutlets,你必須在你的MainMenu類中有一個藍色立方體集,對嗎?但是,當您在應用程序委託中分配init之後,會創建MainMenu的另一個實例,該實例不具有與任何內容相關的屬性。相反,您還應該將IB中的藍色立方體設置爲您的應用程序委託,並在該類中有一個IBOutlet,用於連接IB中的MainMenu藍色立方體。

0

這可能是愚蠢的,但你記得鏈接您的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