ペン先からウィンドウをロードして画面に表示するために使用している NSWindowController のサブクラスがあります。以下は、ウィンドウを表示したいときに呼び出されるコードです。10.6 では showCustomWindow が呼び出されるとウィンドウが表示されますが、10.5 ではウィンドウを表示するためにこのメソッドを 2 回呼び出す必要があります。
-(IBAction)showCustomWindow:(id)sender
{
if(!windowController){
windowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindow"];
}
[windowController showWindow:self];
}
ウィンドウには「起動時に表示」がチェックされており、チェックを外しても違いはないようです。
編集:私が抱えていた問題は、NSWindowController または showWindow に関連していないことに気付きました。私はそれを正しく設定しました。ただし、すべてのクラスがawakeFromNibを実装しているわけではないことがわかりました。私のNSViewサブクラスの1つ(ロードしようとしていたペン先にありました)で、[super awakeFromNib]を呼び出していましたが、「セレクターに応答しません」というメッセージが表示されました(ただし、10.5でのみ奇妙です)。したがって、[super awakeFromNib] を取り出すこともできましたが、できればより堅牢なものを選択しました。
if([NSView instancesRespondToSelector:@selector(awakeFromNib)]) {
[super awakeFromNib];
}
これにより、ペン先が正常にロードされ、showWindow が適切に動作するようになりました。