2

NSViewControllerの使用とビューの切り替えについて質問があります。私は窓のあるCocoaアプリケーションを持っています。ウィンドウの考え方は、各ビューが個別のXIBファイルに保存されている複数のビューを1つずつ表示することです。各ビューには、対応するNSViewControllerがあります。最初のビューのみがロードされる場合に行っていることの最小限の例を作成しました。

@interface MyWindowController : NSWindowController {
    NSViewController *currentViewController;
}
@property (assign) IBOutlet NSView *targetView;
@end

@implementation MyWindowController

@synthesize targetView;

- (id)init
{
    return [super initWithWindowNibName:@"MyWindow"];
}

- (void)dealloc
{
    [currentViewController release];
    [super dealloc];
}

- (void)windowDidLoad
{
    [super windowDidLoad];

    currentViewController = [[NSViewController alloc] initWithNibName:@"FirstView" bundle:nil];
    [self.targetView addSubview:currentViewController.view];
    [currentViewController.view setFrame:targetView.bounds];
}

@end

ウィンドウがロードされると、FirstView.xibからのビューもロードされ、ビューがウィンドウに表示されます。この場合、ロードされたビューにはテキストフィールドしかなく、ユーザーがクリックしなくても入力を直接書き込むことができるようにテキストフィールドを強調表示したいのですが、その方法がわかりません。ビューの読み込み時にテキストフィールドを選択することはできますか?

ドキュメントを読んだ後、おそらくウィンドウのinitialFirstResponderをテキストフィールドに設定したいことがわかりましたが、テキストフィールドがウィンドウとは異なるXIBファイルにある場合はその方法がわかりません。

4

1 に答える 1

1

サブビューを追加/置換し、それをファーストレスポンダーにしたい場合は、ウィンドウコントローラーに、ウィンドウコントローラーが管理するウィンドウのファーストレスポンダーにビューを作成してもらいます。

[[self window] makeFirstResponder:currentViewController.view];

-windowDidLoadこれは、サブビューを追加/置換する他の方法の両方で実行する必要があります。

于 2011-06-16T21:39:25.470 に答える