3

我有一个我创建的 macOS 应用程序。而且我有一个使用 swift & storyboard 构建的首选项窗口,该窗口带有一个样式为 NSTabViewController 的表格工具栏。

我认为没有办法覆盖选项卡图标的位置 - 它们默认位于窗口的左侧。可能吗?

在此处输入图像描述

4

4 回答 4

3

子类NSTabViewController和覆盖func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier]flexibleSpace在两侧添加一个工具栏项。

于 2018-07-06T11:46:18.320 回答
1

按照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
}
于 2018-07-06T18:57:15.890 回答
0

超频:

-(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;

}

于 2022-01-17T06:46:31.623 回答
0

斯威夫特:</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
}
于 2022-01-17T06:51:58.263 回答