2011-05-16 57 views
2

我是Cocoa的新手,無法將我的筆尖文件拆分爲多個筆尖文件。如何將我的筆尖文件所有者設置爲另一個筆尖文件中的對象?

我的MainMenu.nib包含一個​​對象,它是NSObject的一個子類。它在我的主菜單中有一個出口給Show Tracker菜單項。

我的TrackerWindow.nib的文件所有者類別設置爲TrackerController,並且具有到該窗口的視口和該nib文件中的視圖。

我不知道如何讓第二個筆尖的文件所有者成爲第一個筆尖中實例化的TrackerController的代理。 (我相信我需要在第一個筆尖中使用TrackerController實例,以便我可以使用IB來設置菜單項插座。)

我做錯了嗎?如果是這樣,我如何使用IB爲多個筆尖文件中的相同對象設置插口?如果沒有,我怎麼能讓第二個筆尖的文件所有者指向我已經在第一個筆尖實例化的TrackerController

回答

2

這是從iOS開發人員的角度編寫的(使用視圖控制器)。我不確定Mac OS X的不同之處,但移植這些想法應該不難。


設置筆尖的文件的所有者設置簡單的方法是將它作爲參數傳遞給loadNibNamed:owner:options:

[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerController options:optionsDict]; 

上面的代碼假定trackerController是UIViewController中的一個實例。如果不是,請改用以下解決方案。


代替使用initWithNibName:bundle:的,創建一個TrackerViewController如下(其中trackerController是現有TrackerController對象的引用):

NSDictionary *proxyDict = [NSDictionary dictionaryWithObject:trackerController forKey:@"trackerController"]; 
NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:proxyDict forKey:UINibExternalObjects]; 
TrackerViewController *trackerViewController = [[[TrackerViewController alloc] init] autorelease]; 
[[NSBundle mainBundle] loadNibNamed:@"Tracker" owner:trackerViewController options:optionsDict]; 
// Display trackerViewController 

trackerController在Tracker.nib一個標識符創建的外部物體並將你的插座/動作連接到這個對象。

+0

謝謝,這使我在正確的道路上!因爲我已經在我的MainMenu.nib中實例化了一個'trackerController',我使用了下面的代碼:'[NSBundle loadNibNamed:@「TrackerWindow」owner:self.trackerController];'。 – nfm 2011-05-17 01:12:31