複数のNSViewControllerを切り替えるMacOSXドキュメントベースのアプリがあり、各ビューは、以前のNSViewControllerのNSTableViewでのユーザー選択に基づいてNSTableViewsのplistファイルからのデータを表示します。私が抱えている問題は、NSViewControllerがロードされるたびに、ファイルから正しいデータを読み取ってNSTableViewに表示するために、どの関数を呼び出すことができるかを理解できないことです。UIViewControllersには、viewDidLoadの関数ファミリーviewWillAppearを使用しましたが、NSViewControllerに対応する関数を見つけることができませんでした。
現在、私はawakeFromNibを使用しています。これは正常に機能しますが、NSViewControllerが初めてロードされるときのみです。loadViewを試しましたが、NSViewが折りたたまれます。loadViewを使用するには、さらにセットアップを行う必要があると思います。
私は、Hillegassの本Cocoa Programming for MAC OSXのViewSwappingコードを使用しています。これは、ViewControllerを次のコードに切り替えます。
- (void)displayViewController:(ManagingViewController *)vc
curBox: (NSBox *)windowBox
{
// End editing
NSWindow *w = [windowBox window];
BOOL ended = [w makeFirstResponder:w];
if (!ended) {
NSBeep();
return;
}
NSView *v = [vc view];
NSSize currentSize = [[windowBox contentView] frame].size;
NSSize newSize = [v frame].size;
float deltaWidth = newSize.width - currentSize.width;
float deltaHeight = newSize.height - currentSize.height;
NSRect windowFrame = [w frame];
windowFrame.size.height += deltaHeight;
windowFrame.origin.y -= deltaHeight;
windowFrame.size.width += deltaWidth;
[windowBox setContentView:nil];
[w setFrame:windowFrame
display:YES
animate:YES];
[windowBox setContentView:v];
// Put the view controller in the responder chain
[v setNextResponder:vc];
[vc setNextResponder:windowBox];
}
NSViewコントローラーをレスポンダーチェーンに配置します。
NSViewControllersを交換するたびにビューを設定するために呼び出すことができる関数はありますか?NSViewControllerがfirstResponderになったことを確認できますか?