2012-07-22 79 views
1

對不起,如果這是一個非常基本的問題,但我是一般的XCode和Mac開發新手。我想知道如何獲得一個窗口來更改其內容,而不必關閉並打開一個新窗口。例如:更改窗口顯示(Mac - 可可)

- (IBAction)handlelock:(id)sender { 
    [_window orderOut:sender]; 
    [_loginwindow makeKeyAndOrderFront:sender]; 
} 

但是,而不是關閉_window開放_login窗口,有沒有一種方法,使_window _login顯示的內容,當我點擊按鈕?

回答

1

有幾種方法可以做到這一點。你可以在你的xib文件中有一個單獨的視圖,它包含你想要在你的登錄窗口中看到的內容,然後在你窗口中調用setContentView:loginView,並將舊視圖替換爲新視圖。如果您希望能夠切換回原來的視圖,則您希望擁有指向原始視圖的屬性。

另一種方法是使用標籤視圖 - 如果你不喜歡標籤視圖的外觀,有一個tabless tabview看起來不像它有標籤---你將有一個視圖在一個選項卡和另一個登錄視圖。

+0

我敢肯定。有一些原因,這是一個可怕的想法(關於它聽起來根本錯誤),但我用tabless tabview運行,因爲這聽起來最簡單。 – ArtOfWarfare 2013-12-01 17:51:20

2

或者,只是交換窗口的內容觀點:

- (IBAction)handlelock:(id)sender { 
    NSView *previousContentView = _window.contentView; 
    _window.contentView = _loginwindow.contentView; 
    _loginwindow.contentView = previousContentView; // just store it in the other window 
} 

通常你不會需要多個窗口爲這個雖然,你只會有另外的看法,在將其交換

+0

哈哈你究竟如何提出另一種觀點? (對不起,我剛剛開始):) – haseo98 2012-07-23 00:44:56

+1

@ haseo98最簡單的初學者的方法是進入界面生成器,從調色板中拖入「自定義視圖」,然後在主類中創建一個IBOutlet並將其連接到該自定義視圖,現在你可以使用你的IBOutlet NSView作爲你的「新視圖」。 – Vervious 2012-07-23 19:58:20