Вы сказали:
- У меня есть вид вкладки Таблицы
Это ваша проблема.NSTabView
только запрашивает от NSTabViewItem
до drawLabel
, если сам NSTabView
отвечает за рисование панели вкладок, но у вас есть представление вкладки «Таблицы».(«Таблица» - это стиль по умолчанию при перетаскивании NSTabViewController
в раскадровку.)
Вы также сказали:
- У меня есть контроллер представления вкладок (стиль= панель инструментов)
Так что вы даже не хотите, чтобы представление вкладок рисовало панель вкладок;Вы хотите, чтобы элементы на панели инструментов окна выбирали вкладки (как в окне настроек Xcode).
Ваша способность настраивать элементы панели инструментов, созданные для ваших вкладок, ограничена.Вы можете создать подкласс NSTabViewController
и переопределить toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:
, например так:
override func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
let toolbarItem = super.toolbar(toolbar, itemForItemIdentifier: itemIdentifier, willBeInsertedIntoToolbar: flag)
if
let toolbarItem = toolbarItem,
let tabViewItem = tabViewItems.first(where: { ($0.identifier as? String) == itemIdentifier.rawValue })
{
toolbarItem.label = "\(tabViewItem.label) ?"
}
return toolbarItem
}
Но я обнаружил, что другие изменения не сработали:
- Настройка
toolbarItem.image
у меня не получилось. - Установка
toolbarItem.view
заставила элемент перестать получать клики.
Обратите внимание, что свойства minSize
и maxSize
используются только если toolbarItem.view
установлено.
Лучше всего, вероятно, самостоятельно управлять панелью инструментов, не пытаясь использовать поддержку NSTabViewController
.