我有一个我创建的 macOS 应用程序。而且我有一个使用 swift & storyboard 构建的首选项窗口,该窗口带有一个样式为 NSTabViewController 的表格工具栏。
我认为没有办法覆盖选项卡图标的位置 - 它们默认位于窗口的左侧。可能吗?
我有一个我创建的 macOS 应用程序。而且我有一个使用 swift & storyboard 构建的首选项窗口,该窗口带有一个样式为 NSTabViewController 的表格工具栏。
我认为没有办法覆盖选项卡图标的位置 - 它们默认位于窗口的左侧。可能吗?
子类NSTabViewController
和覆盖func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier]
。flexibleSpace
在两侧添加一个工具栏项。
按照Willeke的提示,我在我的NSTabViewController
子类中提出了这个覆盖:
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
super.toolbarDefaultItemIdentifiers(toolbar)
var arr = Array<NSToolbarItem.Identifier>()
for item in self.tabViewItems {
if let identifier = item.identifier {
arr.append(NSToolbarItem.Identifier.init(identifier as! String))
}
}
//insert flexible spaces at first and last index
arr.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
arr.append(NSToolbarItem.Identifier.flexibleSpace)
return arr
}
超频:
-(NSArray<NSToolbarItemIdentifier> *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar{
NSMutableArray *arr = [[super toolbarDefaultItemIdentifiers:toolbar] mutableCopy];
[arr insertObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier atIndex:0];
[arr addObject:[[NSToolbarItem alloc] initWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier].itemIdentifier];
return arr;
}
斯威夫特:</p>
override func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
var array = super.toolbarDefaultItemIdentifiers(toolbar)
array.insert(NSToolbarItem.Identifier.flexibleSpace, at: 0)
array.append(NSToolbarItem.Identifier.flexibleSpace)
return array
}