這實際上是一個兩部分的問題,希望我的解釋很明確:如何讓視圖內容的NSViewController取決於初始化的方式?
我有一個NSViewController可以配置爲在其視圖的一部分上顯示不同的自定義視圖。例如,其視圖可以顯示CustomViewA或CustomView B.
我能夠通過爲每個自定義視圖創建一個NSViewController並使用處理CustomViewA的NSViewController或處理CustomViewB的NSViewController初始化MyViewController來完成此工作。我使用NSBox並將其contentView設置爲由給定的NSViewController提供的視圖。
這種方法的問題是,我有一個NSBox的contentView將舉行「MyView」,然後在「MyView」我有另一個NSBox它將舉行CustomViewA或CustomViewB。
另一個問題是,我希望MyViewController處理CustomViewA和CustomViewB,而不是每個人都有一個單獨的NSViewController。
這是我目前的解決方案的示例代碼:
// How I initialize the NSViewControllers
CustomViewControllerA* cvc = [[CustomViewControllerA alloc] initWithNibName:@"CustomViewA" bundle:nil];
MyViewController* controller = [[MyViewController alloc] initWithCustomViewController:cvc nibName:@"MyView" bundle:nil];
//...
// In Controller of main view
- (void)awakeFromNib
{
// container is an NSBox*
[self.container setContentView:[self.myViewController view]];
}
//...
// In MyViewController
-(void)awakeFromNib
{
// content is an NSBox*
[self.content setContentView:[self.customViewController view]];
}
如何,我可以有我的CustomViewA和CustomViewB現場內MyView.nib二者均使用MyViewController作爲他們的控制器?
我怎麼能讓主視圖持有MyView而不是NSBox?
在此先感謝!
謝謝,我會試試! 雖然有一個問題... MyViewController在用戶單擊按鈕時交換視圖。我只知道如何使用NSBox setCustomView來做到這一點: 在這種方法中,我如何交換用戶點擊的視圖?再次調用[self.view addSubview:...]? – 2010-07-17 19:27:02
或多或少。您可以再次調用addSubview,但是您還需要在添加的原始子視圖上調用[NSView removeFromSuperview]。 – 2010-07-17 20:40:16