Как установить идентификатор NSTabViewItem?
Я хочу знать, когда NSTabView
переключился на конкретный вид. Для этого я продлил NSTabViewController
с моим пользовательским классом, чтобы иметь возможность выступать в качестве делегата:
class OptionsTabViewController: NSTabViewController {
override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
print(tabViewItem!.identifier)
}
}
Это печатает то, что похоже на позиции памяти указателя:
Optional(0x608000100e10)
Optional(0x6080000c36b0)
Я предполагаю, что можно было бы установить эти идентификаторы где-нибудь в конструкторе интерфейсов, но я пробовал писать вещи в разных текстовых полях, помеченных как identifier
и до сих пор получить эти значения позиции памяти в консоли.
Я также использовал print(tabViewItem!.label)
но он печатает метку в кнопке вкладки.
Итак, как я могу установить этот идентификатор, чтобы иметь возможность распознавать, какое представление активно в компоненте представления вкладок?
1 ответ
Прежде всего, вы можете определить свой идентификатор (ы) следующим образом:
тогда в вашем коде вы можете определить enum
для проверки текущей выбранной вкладки, сделайте что-то вроде:
enum YourTabs:String {
case tab1
case tab2
case none
}
class ViewController: NSViewController, NSTabViewDelegate {
@IBOutlet var tabView:NSTabView!
public func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
if let identifier = tabViewItem?.identifier as? String,
let currentTab = YourTabs(rawValue: identifier) {
switch currentTab {
case .tab1:
print("do something with tab1")
break
case .tab2:
print("do something with tab2")
break
default:
break
}
}
}
}