2

我有一個關於使用NSViewController並在視圖之間切換的問題。我有一個Cocoa應用程序,我有一個窗口。與窗口的想法是,它會逐個顯示一個視圖,其中每個視圖存儲在一個單獨的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

只要添加/替換子視圖,並希望它成爲第一個響應者,有你的窗口控制器使視圖通過窗口控制器管理的窗口的第一個響應者:

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

你會想在-windowDidLoad和其他方法添加/替換子視圖中都這樣做。

+0

通過設置不只是視圖,但其netKeyView成爲第一響應者,並在文本字段中設置IB的相應插座,我可以在視圖加載後選擇文本字段。否則,視圖本身成爲按下標籤時文本字段將被選中的第一響應者。 – 2011-06-17 05:30:51

+0

@Brian True;這取決於子視圖的實際內容。 – 2011-06-17 06:37:31

相關問題