2011-02-22 74 views
0

我有一個Mac OS X基於文檔的應用程序,它具有多個可在其中切換的NSViewController,每個視圖都基於前一個NSViewController的NSTableView中的用戶選擇顯示來自NSTableViews中plist文件的數據。我遇到的問題是我無法弄清楚什麼函數可以調用,每當NSViewController加載時,從文件中讀取正確的數據以顯示在NSTableView中。對於UIViewControllers,我使用了viewDidLoad函數族,viewWillAppear,但是我一直無法找到NSViewController的相應函數。當NSViewController重新加載時,使用文件中的新數據重繪NSTableView?

目前我使用awakeFromNib,它工作正常,但只有在第一次加載NSViewController。我試過loadView,但是崩潰了NSView。我認爲我需要做更多的設置才能使用loadView。

我使用的是從Hillegass的書可可規劃爲MAC OS X,其切換ViewControllers用下面的代碼查看交換代碼:

- (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是否已成爲第一個響應者?

回答

0

這個post提供了答案。

我添加以下代碼:

- (void)viewWillLoad { 

} 

- (void)viewDidLoad { 

} 

- (void)loadView { 
[self viewWillLoad]; 
[super loadView]; 
[self viewDidLoad]; 
} 

,並在displayViewController年初我加入

[vc loadView] 
相關問題