Выберите элемент управления в загруженном представлении - PullRequest
2 голосов
/ 17 июня 2011

У меня есть вопрос об использовании NSViewController и переключении между представлениями.У меня есть приложение Какао, где у меня есть окно.Идея с окном состоит в том, что оно будет отображать количество представлений один за другим, где каждое представление хранится в отдельном файле XIB.Каждое представление имеет соответствующий 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, отличном от окна.

1 Ответ

1 голос
/ 17 июня 2011

Всякий раз, когда вы добавляете / заменяете подпредставление и хотите, чтобы оно было первым респондентом, попросите ваш оконный контроллер сделать представление первым респондентом окна, управляемого оконным контроллером:

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

Вы будетехотите сделать это как в -windowDidLoad, так и в других методах, добавляющих / заменяющих подпредставления.

...