Какао - узнать, когда NSTabView изменил свои вкладки - PullRequest
3 голосов
/ 27 марта 2012

как я могу узнать, когда NSTabViewItem был изменен, то есть пользователь изменил представление NSTabView.

В идеале я хочу создать уведомление, но приветствуется любое решение.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

В моем первоначальном ответе предлагалось соблюдать selectedTabViewItem из NSTabView, но, похоже, это не сработало (при тестировании я могу заставить его наблюдать только NSKeyValueObservingOptionInitial).

Вероятно, более разумным решением является использование делегата. Реализуйте tabView:didSelectTabViewItem: в соответствующем контроллере.

Документы здесь .

1 голос
/ 22 января 2018

Вот пример в Swift 3.

Создайте собственный класс для вашего NSTabViewController, который действует как делегат NSTabView.Класс NSTabViewController уже реализует протокол NSTabViewDelegate.

class CustomTabViewController: NSTabViewController {
    override func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
        let identifier = tabViewItem?.identifier as? String
        print(identifier)
    }

}

Затем в Интерфейсном Разработчике:

  1. Назначьте пользовательский класс, созданный вами, для вашего контроллера представления вкладок в Identity.Инспектор на правой панели
  2. На панели иерархии интерфейса слева перетащите элемент управления из представления вкладок в контроллер представления пользовательских вкладок (имя будет зависеть от вашего пользовательского класса) и выберите delegate из небольшогопоявляется всплывающее окно

Вы также можете реализовать другие методы в своем делегате , как описано в документации из NSTabViewDelegate.

...