将 NSTabViewItem 的副本从 NSTabView 添加到同一个 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
错误。我已经查看了 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
所以您收到该错误是因为您在未实现 -copyWithZone
的对象上调用 copy()
。 (因为 NSTabViewItem 子类 NSView 不符合 NSCopying
协议)
您可以做的是初始化一个新的 NSTabViewItem
,然后从第一项 (tabViewItemAtIndex(0)
) 获取属性,然后将它们设置为您的新 [=14] =]
您可以调用 setLabel
、setIdentifier
、setColor
、setView
和 setTooltip
初始化并设置新 NSTabViewItem
后,您可以将其添加到 NSTabView
NSTabViewItem *tempTabViewItem = [NSTabViewItem new];
//set your properties on tempTabViewItem here
tabView.addTabViewItem(tempTabViewItem);
感谢 Copy NSView in cocoa 和@MattyAyOh 的回答,我解决了我的问题:
var data = NSKeyedArchiver.archivedDataWithRootObject(view)
var newView = NSKeyedUnarchiver.unarchiveObjectWithData(data) as NSView
newTab.view = newView
tabView.addTabViewItem(newTab)
我正在创建一个简单的 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
所以您收到该错误是因为您在未实现 -copyWithZone
的对象上调用 copy()
。 (因为 NSTabViewItem 子类 NSView 不符合 NSCopying
协议)
您可以做的是初始化一个新的 NSTabViewItem
,然后从第一项 (tabViewItemAtIndex(0)
) 获取属性,然后将它们设置为您的新 [=14] =]
您可以调用 setLabel
、setIdentifier
、setColor
、setView
和 setTooltip
初始化并设置新 NSTabViewItem
后,您可以将其添加到 NSTabView
NSTabViewItem *tempTabViewItem = [NSTabViewItem new];
//set your properties on tempTabViewItem here
tabView.addTabViewItem(tempTabViewItem);
感谢 Copy NSView in cocoa 和@MattyAyOh 的回答,我解决了我的问题:
var data = NSKeyedArchiver.archivedDataWithRootObject(view)
var newView = NSKeyedUnarchiver.unarchiveObjectWithData(data) as NSView
newTab.view = newView
tabView.addTabViewItem(newTab)