2013-10-21 50 views
0

我有MainMenu.Xib它有一個狀態菜單元素。 MainMenu文件所有者被映射到AppDelegate。從狀態菜單加載xib窗口

我也有另外一個XIB這是一個窗口,它的文件所有者被映射到一個視圖控制器具有相同的名稱。

所以,我嘗試過,它的作品是我已經在appDelegate中創建了一個動作,並已使用First Responder將狀態菜單中的菜單項映射到appDelete中的動作。

在動作我已經把:

SubscriptionsViewController *vc = [[SubscriptionsViewController alloc] initWithNibName:@"Subscriptions" bundle:nil]; 
[vc view]; 

如果我通過代碼它的窗口中顯示,但隨後消失。所以,我有兩個問題

1)我認爲有一種方式來加載與NSMenuItem的廈門國際銀行,而不需要上面的代碼。

2)如何防止關閉該窗口,對嗎?我需要保存視圖指針還是什麼?

編輯:格式代碼。

回答

1

1)我認爲有一種方式來加載與NSMenuItem的廈門國際銀行,而不需要的上述代碼。

因爲NSWindow並不像iOS(UIWindow:UIView)那樣從NSView繼承,所以使用NSViewController從xib加載窗口是沒有意義的。改爲使用NSObject的子類。

@interface SubscriptionsViewController : NSObject 

    @property (assign, nonatomic) IBOutlet NSWindow *window; 

@end 


@implementation SubscriptionsViewController 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 

     [NSBundle loadNibNamed:@"Subscriptions" owner:self]; 

    } 
    return self; 
} 

@end 

2)如何防止關閉該窗口,對嗎?我需要保存視圖指針還是什麼?

  • 這取決於上下文保留subscriptionsViewController與否的實例。您可以使用下面的代碼來顯示一個窗口,在窗口的實例是筆尖 -

    self.subscriptionsViewController = [[SubscriptionsViewController alloc] init]; 
        [self.subscriptionsViewController.window makeKeyAndOrderFront:self]; 
    

請記住,如果「可見在啓動」在筆尖被設置,那麼窗口是可見的,當你實例subscriptionsViewController 。

+0

MYCentralViewController假設是SubscriptionsViewController? –

+1

是的!編輯我的答案 – San

0

您可以添加你的窗口進入MainMenu.xib,而不是使用加XIB文件並創建在AppDelegare.h出口爲

@property (assign) IBOutlet NSWindow *window; 

然後,所有你需要做的是

window.isVisible = !window.isVisible; 

在必要的操作方法......

+0

我開始這樣做,但這個窗口是要在它一噸的邏輯,不希望它亂扔垃圾的的appdelegate。所以我想把它分開。 –

+0

然後,相信你一定會需要啓動的廈門國際銀行文件,你做你的榜樣... – emreoktem