我正在创建一个简单的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
答案 0 :(得分:3)
感谢Copy NSView in cocoa和@MattyAyOh的答案,我解决了我的问题:
var data = NSKeyedArchiver.archivedDataWithRootObject(view)
var newView = NSKeyedUnarchiver.unarchiveObjectWithData(data) as NSView
newTab.view = newView
tabView.addTabViewItem(newTab)
答案 1 :(得分:0)
因此,您正在收到错误,因为您正在对未实现copy()
的对象调用-copyWithZone
。 (因为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);