0

ビューをリロードするときに問題があります。OSX は IOS ほど単純ではありません。

MainMenu.xib には NSBox があります。Hillegrath によると、いくつかのビューが配列に格納され、セグメント化されたボタンが押されるとビューが公開されます。これは正常に動作します。[self someAction]を介して新しい値を再表示する必要がある変更が加えられたときに、これらのビューを再訪することが私の欲求不満です。2 つのビューのアクションは、他のビューの変更を伝播する必要がある (グローバル) 値を変更します。ビューを含むボックスを保持するために、xib (MainMenu) 付きのウィンドウ コントローラーを使用しています。また、コードでビューにタイトルを付けます。

グローバル ivar 値は必要に応じて適切に変更され、ログはそれを示しています。ただし、ビューが再表示された場合、つまりビューの詳細を更新した場合、依存する操作は発生しません。

発生しているように見えるのは、さまざまなビューが表示されているときに loadView が呼び出されないことです ** **。awakeFromNib と loadView は、各ビューが最初に表示されるときは正しく動作しますが、再表示されることはありません。これは、ビューが非表示になっている可能性がありますが、viewDidUnhide は効果がないことを意味します。

ビューを変更するコード (SO MVC の回答と Hillegrath から) は次のとおりです。

 NSViewController *activeVC =
        (NSViewController *) self.viewControllers[index];
   // [_box setContentView:nil];
    [_box setContentView:activeVC.view];
    [_box setNeedsDisplay:YES];

コピーしたコードから、新しいビューを設定する前にアクティブ コンテンツを nil に設定しようとしたこともわかりますが、役に立ちませんでした。

アイデア、推奨事項、通知も機能しませんが、正しく設定されていない可能性があります。

ありがとう

4

1 に答える 1