0

プログラム内のいくつかの変数にアクセスできません。

MainMenuというクラスが1つあります。

.hファイルで、次の2つのプロパティを宣言しました。

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」というメソッドを呼び出します。次に、アクセスに問題がある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つの異なるインスタンスの1つだと思います。IBOutletsを接続した場合は、IBの青い立方体をMainMenuクラスに設定する必要があります。ただし、アプリデリゲートでinitを割り当てると、これらのプロパティが何にも接続されていないMainMenuの別のインスタンスが作成されます。代わりに、IBの青いキューブをアプリデリゲートに設定し、そのクラスにIBOutletを設定して、IBのMainMenuの青いキューブに接続する必要があります。

于 2012-04-17T21:47:13.370 に答える
0

これはばかげているかもしれませんが、Interface BuilderでNSWindowとNSViewをリンクすることを覚えていますか?または、少なくとも手動でそれらをインスタンス化していますか?

私の推測では(MainMenu.xibがどこかにあると仮定して)、を呼び出すとinit、オブジェクトが初期化されますが、必ずしもロードされるとは限りません。viewDidLoadコントローラまたはメソッドでswitchViewsメソッドを呼び出して、viewWillAppearすべてがロードされていることを確認する必要があります。

于 2012-04-17T20:41:48.040 に答える