[英]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
錯誤。 我已經檢查了NSTableView
和NSTableViewItem
的文檔,但無法弄清楚如何做到這一點。
編輯我的整個錯誤看起來像這樣:
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
來自文檔
你可以調用setLabel
, setIdentifier
, setColor
, setView
和setTooltip
一旦初始化並設置了新的NSTabViewItem
,就可以將其添加到NSTabView
NSTabViewItem *tempTabViewItem = [NSTabViewItem new];
//set your properties on tempTabViewItem here
tabView.addTabViewItem(tempTabViewItem);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.