2012-01-29 62 views
1

我仍然有很多可以使用可可來學習,所以我可能錯過了一些明顯的東西。我有一個自定義視圖,我想在一個nssplitview中顯示,替換當前的子視圖。將NSSplitview的子視圖替換爲自定義視圖

我有一個MessageView.xib文件和一個MessageView .h/.m,其子類NSView。我通過Xcode 4內置的gui構建器爲我的主窗口(包含nssplitview的窗口)創建了一個自定義視圖實例。我在我的窗口控制器中爲這個MessageView實例創建了一個插座。

在我的控制器的窗口時,我想換出子視圖的SPLITVIEW運行這個

[splitView replaceSubview:[[splitView subviews] objectAtIndex:1] with:viewMessage]; 

viewMessage是出口到消息查看。

運行此代碼時,該子視圖的顯示將變爲空白。我不確定我的自定義視圖是否有問題,或者有一些尺寸問題。有什麼我需要做的,以適應視圖到分割屏幕視圖或我的自定義視圖只是不正確顯示?我很難找到關於用Xcode 4創建自定義子視圖的教程,所以我不確定是否有什麼可能是錯誤的。自定義視圖中只有一個標籤和一個文本框。

+0

你有沒有想過這個想法? – livingtech 2012-05-22 18:55:51

+1

看起來像這樣可以修復它:http://stackoverflow.com/q/1419038/18961 – livingtech 2012-05-22 18:57:20

回答

3

通常,您不應該用自己的NSSplitView的子視圖替換。相反,您將自己的自定義視圖添加爲分隔線兩側默認子視圖的子視圖。你可以用代碼addSubview:來做到這一點,但在Xcode中使用Interface Builder可能更容易。將一個「自定義視圖」到SPLITVIEW,然後在身份檢查,在自定義類,類更改爲您自定義的NSView子類的名稱:

enter image description here

我想(把我的頭頂部,未經測試),如果您確實需要用您自己的類替換默認的NSSplitView子視圖,則可以使用此方法在Interface Builder中執行此操作,但選擇默認子視圖本身並在檢查器中更改其類。這不適用於所有AppKit類,但它可能適用於NSSplitView。

+0

這並沒有真正回答這裏的問題。您建議如何使用子類,但問題是如何在運行時替換或替換現有的視圖。我也有同樣的需要。 (就像下面的Wakjob一樣。)當我得到這個工作時,我可能會再次發佈。 – livingtech 2012-05-22 18:55:12

+1

這不是(仍然不清楚)爲什麼OP想要在運行時用自己的視圖替換分割視圖的默認子視圖,而不是將其自己的視圖添加爲子視圖,這是標準方法。我並不認爲沒有理由這樣做,但是當一個自我描述的初學者詢問建議時,我傾向於引導他們走向標準方法,除非有明確的理由去做更復雜的事情。與鏈接的問題不同,他沒有清楚地表明他在運行時在多個視圖之間切換。 – 2012-05-22 19:59:51

相關問題