簡體   English   中英

將NSTabViewItem的NSTabViewItem副本添加到同一個NSTabView中

[英]Adding a copy of an NSTabViewItem from an NSTabView into the same NSTabView

我正在創建一個簡單的Web瀏覽器,並希望實現選項卡。 為此,我正在使用NSTabView 我基本上希望每個選項卡都有一個WebView ,它將顯示加載的網站。 我只從一個選項卡開始,並希望在創建新選項卡時添加第一個選項卡的精確副本。 我嘗試了類似tabView.addTabViewItem(tabView.tabViewItemAtIndex(0).copy() as NSTableViewItem)但我收到一個unrecognised selector sent to instance錯誤。 我已經檢查了NSTableViewNSTableViewItem的文檔,但無法弄清楚如何做到這一點。

編輯我的整個錯誤看起來像這樣:

015-03-14 17:15:57.884 Browser[1955:56547] -[NSTabViewItem copyWithZone:]: unrecognized selector sent to instance 0x600000100b40
2015-03-14 17:15:57.884 Browser[1955:56547] -[NSTabViewItem copyWithZone:]: unrecognized selector sent to instance 0x600000100b40

感謝cocoa中復制NSView和@MattyAyOh的答案,我通過以下方式解決了我的問題:

var data = NSKeyedArchiver.archivedDataWithRootObject(view)
var newView = NSKeyedUnarchiver.unarchiveObjectWithData(data) as NSView
newTab.view = newView
tabView.addTabViewItem(newTab)

因此,您正在獲取該錯誤,因為您正在對未實現-copyWithZone的對象調用copy() (由於子類NSTabViewItem的NSView不符合NSCopying協議)

你可以做的就是初始化一個新的NSTabViewItem ,然后從第一個項目( tabViewItemAtIndex(0) )獲取屬性,然后將它們設置為新的NSTabViewItem

來自文檔

你可以調用setLabelsetIdentifiersetColorsetViewsetTooltip

一旦初始化並設置了新的NSTabViewItem ,就可以將其添加到NSTabView

NSTabViewItem *tempTabViewItem = [NSTabViewItem new];
//set your properties on tempTabViewItem here
tabView.addTabViewItem(tempTabViewItem);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM